Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7e52fc60 authored by Eino-Ville Talvala's avatar Eino-Ville Talvala Committed by Android (Google) Code Review
Browse files

Merge "Camera: Add dumpsys --unreachable support" into nyc-dev

parents cc95bcf0 d89821ec
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -66,7 +66,8 @@ LOCAL_SHARED_LIBRARIES:= \
    libhardware \
    libhardware \
    libsync \
    libsync \
    libcamera_metadata \
    libcamera_metadata \
    libjpeg
    libjpeg \
    libmemunreachable


LOCAL_C_INCLUDES += \
LOCAL_C_INCLUDES += \
    system/media/private/camera/include \
    system/media/private/camera/include \
+20 −3
Original line number Original line Diff line number Diff line
@@ -41,6 +41,7 @@
#include <cutils/properties.h>
#include <cutils/properties.h>
#include <gui/Surface.h>
#include <gui/Surface.h>
#include <hardware/hardware.h>
#include <hardware/hardware.h>
#include <memunreachable/memunreachable.h>
#include <media/AudioSystem.h>
#include <media/AudioSystem.h>
#include <media/IMediaHTTPService.h>
#include <media/IMediaHTTPService.h>
#include <media/mediaplayer.h>
#include <media/mediaplayer.h>
@@ -2595,16 +2596,32 @@ status_t CameraService::dump(int fd, const Vector<String16>& args) {
        write(fd, "\n", 1);
        write(fd, "\n", 1);
        camera3::CameraTraces::dump(fd, args);
        camera3::CameraTraces::dump(fd, args);


        // change logging level
        // Process dump arguments, if any
        int n = args.size();
        int n = args.size();
        for (int i = 0; i + 1 < n; i++) {
        String16 verboseOption("-v");
        String16 verboseOption("-v");
        String16 unreachableOption("--unreachable");
        for (int i = 0; i < n; i++) {
            if (args[i] == verboseOption) {
            if (args[i] == verboseOption) {
                // change logging level
                if (i + 1 >= n) continue;
                String8 levelStr(args[i+1]);
                String8 levelStr(args[i+1]);
                int level = atoi(levelStr.string());
                int level = atoi(levelStr.string());
                result = String8::format("\nSetting log level to %d.\n", level);
                result = String8::format("\nSetting log level to %d.\n", level);
                setLogLevel(level);
                setLogLevel(level);
                write(fd, result.string(), result.size());
                write(fd, result.string(), result.size());
            } else if (args[i] == unreachableOption) {
                // Dump memory analysis
                // TODO - should limit be an argument parameter?
                UnreachableMemoryInfo info;
                bool success = GetUnreachableMemory(info, /*limit*/ 10000);
                if (!success) {
                    dprintf(fd, "\nUnable to dump unreachable memory. "
                            "Try disabling SELinux enforcement.\n");
                } else {
                    dprintf(fd, "\nDumping unreachable memory:\n");
                    std::string s = info.ToString(/*log_contents*/ true);
                    write(fd, s.c_str(), s.size());
                }
            }
            }
        }
        }
    }
    }