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

Commit 89437788 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Make TimeCheck Host Available"

parents bd62e022 f5b68511
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -25,8 +25,8 @@
#include <aidl/android/media/BnResourceManagerService.h>

#include <media/stagefright/foundation/ADebug.h>
#include <media/stagefright/ProcessInfoInterface.h>
#include <mediadrm/DrmSessionManager.h>
#include <mediautils/ProcessInfoInterface.h>

#include <algorithm>
#include <iostream>
+5 −0
Original line number Diff line number Diff line
@@ -110,6 +110,11 @@ cc_defaults {
                "-DNO_IMEMORY",
            ],
        },
        host: {
            sanitize: {
                cfi: false,
            },
        },
        apex: {
            exclude_shared_libs: [
                "libbinder",
+37 −42
Original line number Diff line number Diff line
@@ -28,19 +28,35 @@ cc_defaults {
        "-Werror",
        "-Wextra",
    ],
    sanitize: {
        cfi: true,
        integer_overflow: true,
    },
    target: {
        host: {
            sanitize: {
                cfi: false,
            },
        },
    },
}

filegroup {
    name: "libmediautils_core_srcs",
    srcs: [
        "AImageReaderUtils.cpp",
        "BatteryNotifier.cpp",
        "ISchedulingPolicyService.cpp",
        "Library.cpp",
        "MediaUtilsDelayed.cpp",
        "MethodStatistics.cpp",
        "Process.cpp",
        "ProcessInfo.cpp",
        "SchedulingPolicyService.cpp",
        "ServiceUtilities.cpp",
        "ThreadSnapshot.cpp",
        "TimeCheck.cpp",
        "TimerThread.cpp",
    ],
}

@@ -55,47 +71,15 @@ cc_library_headers {
    export_include_dirs: ["include"],
}

cc_library {
    name: "libmediautils_core",
    defaults: ["libmediautils_defaults"],
    host_supported: true,
    srcs: [":libmediautils_core_srcs"],
    shared_libs: [
        "libaudioutils", // for clock.h, Statistics.h
        "libbase",
        "libbinder",
        "libhidlbase",
        "liblog",
        "libpermission",
        "libutils",
        "android.hardware.graphics.bufferqueue@1.0",
        "android.hidl.token@1.0-utils",
        "packagemanager_aidl-cpp",
    ],

    export_shared_lib_headers: [
        "libpermission",
    ],

    local_include_dirs: ["include"],
    export_include_dirs: ["include"],
}

cc_library {
    name: "libmediautils",
    host_supported: true,
    defaults: ["libmediautils_defaults"],
    srcs: [
        ":libmediautils_core_srcs",
        "BatteryNotifier.cpp",
        "MemoryLeakTrackUtil.cpp",
        "LimitProcessMemory.cpp",
        "ProcessInfo.cpp",
        "ServiceUtilities.cpp",
        "TimeCheck.cpp",
        "TimerThread.cpp",
    ],
    static_libs: [
        "libc_malloc_debug_backtrace",
        "libbatterystats_aidl",
        "libprocessinfoservice_aidl",
    ],
@@ -119,11 +103,6 @@ cc_library {

    logtags: ["EventLogTags.logtags"],

    header_libs: [
        "bionic_libc_platform_headers",
        "libmedia_headers",
    ],

    export_shared_lib_headers: [
        "libpermission",
    ],
@@ -132,16 +111,32 @@ cc_library {
        "libmediautils_delayed", // lazy loaded
    ],

    target: {
        android: {
            srcs: [
                "LimitProcessMemory.cpp",
                "MemoryLeakTrackUtil.cpp",
            ],
            static_libs: [
                "libc_malloc_debug_backtrace",
            ],
            include_dirs: [
                // For DEBUGGER_SIGNAL
                "system/core/debuggerd/include",
            ],
            header_libs: [
                "bionic_libc_platform_headers",
            ],
        },
    },

    local_include_dirs: ["include"],
    export_include_dirs: ["include"],
}

cc_library {
    name: "libmediautils_delayed", // match with MEDIAUTILS_DELAYED_LIBRARY_NAME
    host_supported: true,
    defaults: ["libmediautils_defaults"],
    srcs: [
        "MediaUtilsDelayedLibrary.cpp",
+1 −1
Original line number Diff line number Diff line
@@ -18,7 +18,7 @@
#define LOG_TAG "ProcessInfo"
#include <utils/Log.h>

#include <media/stagefright/ProcessInfo.h>
#include <mediautils/ProcessInfo.h>

#include <binder/IPCThreadState.h>
#include <binder/IServiceManager.h>
+14 −2
Original line number Diff line number Diff line
@@ -24,8 +24,20 @@
#include <mediautils/FixedString.h>
#include <mediautils/MethodStatistics.h>
#include <mediautils/TimeCheck.h>
#include <mediautils/TidWrapper.h>
#include <utils/Log.h>

#if defined(__BIONIC__)
#include "debuggerd/handler.h"
#endif

// This function appropriately signals a pid to dump a backtrace if we are
// running on device.
static inline void signalAudioHAL([[maybe_unused]] pid_t pid) {
#if defined(__BIONIC__)
    sigqueue(pid, DEBUGGER_SIGNAL, {.sival_int = 0});
#endif
}

namespace android::mediautils {

@@ -143,7 +155,7 @@ TimeCheck::TimeCheck(std::string_view tag, OnTimerFunc&& onTimer, Duration reque
        Duration secondChanceDuration, bool crashOnTimeout)
    : mTimeCheckHandler{ std::make_shared<TimeCheckHandler>(
            tag, std::move(onTimer), crashOnTimeout, requestedTimeoutDuration,
            secondChanceDuration, std::chrono::system_clock::now(), gettid()) }
            secondChanceDuration, std::chrono::system_clock::now(), getThreadIdWrapper()) }
    , mTimerHandle(requestedTimeoutDuration.count() == 0
              /* for TimeCheck we don't consider a non-zero secondChanceDuration here */
              ? getTimeCheckThread().trackTask(mTimeCheckHandler->tag)
@@ -251,7 +263,7 @@ void TimeCheck::TimeCheckHandler::onTimeout(TimerThread::Handle timerHandle) con
        for (const auto& pid : pids) {
            ALOGI("requesting tombstone for pid: %d", pid);
            halPids.append(std::to_string(pid)).append(" ");
            sigqueue(pid, DEBUGGER_SIGNAL, {.sival_int = 0});
            signalAudioHAL(pid);
        }
        sleep(1);
    } else {
Loading