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

Commit f5b68511 authored by Atneya Nair's avatar Atneya Nair
Browse files

Make TimeCheck Host Available

- Make TimeCheck and TimerThread host available
- Ensure all unit tests are host available, so utils are tested
  automatically in presubmit

Test: Compiles, atest --host
Change-Id: I133d960a37fa32718c8bc64b7c72a650edd32ee0
parent f3376c0e
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