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
diff --git a/media/libmediaplayerservice/tests/DrmSessionManager_test.cpp b/media/libmediaplayerservice/tests/DrmSessionManager_test.cpp
index 2beb47f..30f6a91 100644
--- a/media/libmediaplayerservice/tests/DrmSessionManager_test.cpp
+++ b/media/libmediaplayerservice/tests/DrmSessionManager_test.cpp
@@ -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>
diff --git a/media/module/foundation/Android.bp b/media/module/foundation/Android.bp
index ca17117..dc8384d 100644
--- a/media/module/foundation/Android.bp
+++ b/media/module/foundation/Android.bp
@@ -110,6 +110,11 @@
"-DNO_IMEMORY",
],
},
+ host: {
+ sanitize: {
+ cfi: false,
+ },
+ },
apex: {
exclude_shared_libs: [
"libbinder",
diff --git a/media/utils/Android.bp b/media/utils/Android.bp
index 04d9ed9..698752f 100644
--- a/media/utils/Android.bp
+++ b/media/utils/Android.bp
@@ -28,19 +28,35 @@
"-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 @@
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 @@
logtags: ["EventLogTags.logtags"],
- header_libs: [
- "bionic_libc_platform_headers",
- "libmedia_headers",
- ],
-
export_shared_lib_headers: [
"libpermission",
],
@@ -132,16 +111,32 @@
"libmediautils_delayed", // lazy loaded
],
- include_dirs: [
- // For DEBUGGER_SIGNAL
- "system/core/debuggerd/include",
- ],
+ 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",
diff --git a/media/utils/ProcessInfo.cpp b/media/utils/ProcessInfo.cpp
index da199c4..3baa4b4 100644
--- a/media/utils/ProcessInfo.cpp
+++ b/media/utils/ProcessInfo.cpp
@@ -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>
diff --git a/media/utils/TimeCheck.cpp b/media/utils/TimeCheck.cpp
index 6823f4f..efa53f8 100644
--- a/media/utils/TimeCheck.cpp
+++ b/media/utils/TimeCheck.cpp
@@ -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 @@
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 @@
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 {
diff --git a/media/utils/TimerThread.cpp b/media/utils/TimerThread.cpp
index 5e58a3d..51bd5eb 100644
--- a/media/utils/TimerThread.cpp
+++ b/media/utils/TimerThread.cpp
@@ -22,6 +22,7 @@
#include <vector>
#include <mediautils/MediaUtilsDelayed.h>
+#include <mediautils/TidWrapper.h>
#include <mediautils/TimerThread.h>
#include <utils/Log.h>
#include <utils/ThreadDefs.h>
@@ -39,14 +40,14 @@
const auto now = std::chrono::system_clock::now();
auto request = std::make_shared<const Request>(now, now +
std::chrono::duration_cast<std::chrono::system_clock::duration>(timeoutDuration),
- secondChanceDuration, gettid(), tag);
+ secondChanceDuration, getThreadIdWrapper(), tag);
return mMonitorThread.add(std::move(request), std::move(func), timeoutDuration);
}
TimerThread::Handle TimerThread::trackTask(std::string_view tag) {
const auto now = std::chrono::system_clock::now();
auto request = std::make_shared<const Request>(now, now,
- Duration{} /* secondChanceDuration */, gettid(), tag);
+ Duration{} /* secondChanceDuration */, getThreadIdWrapper(), tag);
return mNoTimeoutMap.add(std::move(request));
}
diff --git a/media/utils/fuzzers/Android.bp b/media/utils/fuzzers/Android.bp
index fc4c2f9..bd9a462 100644
--- a/media/utils/fuzzers/Android.bp
+++ b/media/utils/fuzzers/Android.bp
@@ -14,7 +14,7 @@
"libbinder",
"liblog",
"libcutils",
- "libmediautils_core",
+ "libmediautils",
"libutils",
"framework-permission-aidl-cpp",
"packagemanager_aidl-cpp",
@@ -30,32 +30,24 @@
cc_fuzz {
name: "libmediautils_fuzzer_battery_notifier",
- host_supported: false,
- shared_libs: ["libmediautils"],
defaults: ["libmediautils_fuzzer_defaults"],
srcs: ["BatteryNotifierFuzz.cpp"],
}
cc_fuzz {
name: "libmediautils_fuzzer_scheduling_policy_service",
- host_supported: false,
- shared_libs: ["libmediautils"],
defaults: ["libmediautils_fuzzer_defaults"],
srcs: ["SchedulingPolicyServiceFuzz.cpp"],
}
cc_fuzz {
name: "libmediautils_fuzzer_service_utilities",
- host_supported: false,
- shared_libs: ["libmediautils"],
defaults: ["libmediautils_fuzzer_defaults"],
srcs: ["ServiceUtilitiesFuzz.cpp"],
}
cc_fuzz {
name: "libmediautils_fuzzer_time_check",
- host_supported: false,
- shared_libs: ["libmediautils"],
defaults: ["libmediautils_fuzzer_defaults"],
srcs: ["TimeCheckFuzz.cpp"],
}
diff --git a/media/utils/fuzzers/SchedulingPolicyServiceFuzz.cpp b/media/utils/fuzzers/SchedulingPolicyServiceFuzz.cpp
index 32fc3be..d672fb0 100644
--- a/media/utils/fuzzers/SchedulingPolicyServiceFuzz.cpp
+++ b/media/utils/fuzzers/SchedulingPolicyServiceFuzz.cpp
@@ -19,6 +19,7 @@
#include <utils/String16.h>
#include <android/log.h>
#include <mediautils/SchedulingPolicyService.h>
+#include <mediautils/TidWrapper.h>
#include "fuzzer/FuzzedDataProvider.h"
using android::IBatteryStats;
using android::IBinder;
@@ -55,7 +56,8 @@
int32_t priority = data_provider.ConsumeIntegral<int32_t>();
bool is_for_app = data_provider.ConsumeBool();
bool async = data_provider.ConsumeBool();
- requestPriority(getpid(), gettid(), priority, is_for_app, async);
+ requestPriority(getpid(), android::mediautils::getThreadIdWrapper(), priority, is_for_app,
+ async);
// TODO: Verify and re-enable in AOSP (R).
// bool enable = data_provider.ConsumeBool();
// We are just using batterystats to avoid the need
diff --git a/media/libstagefright/include/media/stagefright/ProcessInfo.h b/media/utils/include/mediautils/ProcessInfo.h
similarity index 90%
rename from media/libstagefright/include/media/stagefright/ProcessInfo.h
rename to media/utils/include/mediautils/ProcessInfo.h
index 06b9c92..9afa3df 100644
--- a/media/libstagefright/include/media/stagefright/ProcessInfo.h
+++ b/media/utils/include/mediautils/ProcessInfo.h
@@ -18,8 +18,7 @@
#define PROCESS_INFO_H_
-#include <media/stagefright/foundation/ABase.h>
-#include <media/stagefright/ProcessInfoInterface.h>
+#include <mediautils/ProcessInfoInterface.h>
#include <map>
#include <mutex>
#include <utils/Condition.h>
@@ -46,7 +45,8 @@
std::mutex mOverrideLock;
std::map<int, ProcessInfoOverride> mOverrideMap GUARDED_BY(mOverrideLock);
- DISALLOW_EVIL_CONSTRUCTORS(ProcessInfo);
+ ProcessInfo(const ProcessInfo&) = delete;
+ ProcessInfo& operator=(const ProcessInfo&) = delete;
};
} // namespace android
diff --git a/media/libstagefright/include/media/stagefright/ProcessInfoInterface.h b/media/utils/include/mediautils/ProcessInfoInterface.h
similarity index 93%
rename from media/libstagefright/include/media/stagefright/ProcessInfoInterface.h
rename to media/utils/include/mediautils/ProcessInfoInterface.h
index b7fc858..b6529fc 100644
--- a/media/libstagefright/include/media/stagefright/ProcessInfoInterface.h
+++ b/media/utils/include/mediautils/ProcessInfoInterface.h
@@ -25,8 +25,8 @@
virtual bool getPriority(int pid, int* priority) = 0;
virtual bool isPidTrusted(int pid) = 0;
virtual bool isPidUidTrusted(int pid, int uid) = 0;
- virtual bool overrideProcessInfo(int pid, int procState, int oomScore);
- virtual void removeProcessInfoOverride(int pid);
+ virtual bool overrideProcessInfo(int pid, int procState, int oomScore) = 0;
+ virtual void removeProcessInfoOverride(int pid) = 0;
protected:
virtual ~ProcessInfoInterface() {}
diff --git a/media/utils/include/mediautils/TidWrapper.h b/media/utils/include/mediautils/TidWrapper.h
new file mode 100644
index 0000000..add2fa5
--- /dev/null
+++ b/media/utils/include/mediautils/TidWrapper.h
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#pragma once
+
+#include <sys/syscall.h>
+#include <unistd.h>
+
+namespace android::mediautils {
+
+// The library wrapper for gettid is only available on bionic. If we don't link
+// against it, we syscall directly.
+inline pid_t getThreadIdWrapper() {
+#if defined(__BIONIC__)
+ return ::gettid();
+#else
+ return syscall(SYS_gettid);
+#endif
+}
+
+}
diff --git a/media/utils/tests/Android.bp b/media/utils/tests/Android.bp
index 48d18b0..6ea1c91 100644
--- a/media/utils/tests/Android.bp
+++ b/media/utils/tests/Android.bp
@@ -20,10 +20,34 @@
],
sanitize: {
- address: true,
- cfi: true,
+ undefined: true,
+ misc_undefined: [
+ "float-divide-by-zero",
+ "local-bounds",
+ ],
integer_overflow: true,
+ cfi: true,
memtag_heap: true,
+ diag: {
+ undefined: true,
+ misc_undefined: [
+ "float-divide-by-zero",
+ "local-bounds",
+ ],
+ integer_overflow: true,
+ cfi: true,
+ memtag_heap: true,
+ },
+ },
+ target: {
+ host: {
+ sanitize: {
+ cfi: false,
+ diag: {
+ cfi: false,
+ },
+ },
+ },
},
}
@@ -36,23 +60,6 @@
shared_libs: [
"liblog",
- "libutils",
- ],
-
- static_libs: [
- "libmediautils_core",
- ],
-}
-
-cc_defaults {
- name: "libmediautils_tests_host_unavail",
-
- defaults: ["libmediautils_tests_config"],
-
- host_supported: false,
-
- shared_libs: [
- "liblog",
"libmediautils",
"libutils",
],
@@ -89,22 +96,17 @@
cc_test {
name: "libmediautils_test",
- defaults: ["libmediautils_tests_host_unavail"],
-
- shared_libs: [
- "libmediautils",
- ],
+ defaults: ["libmediautils_tests_defaults"],
srcs: [
"memory-test.cpp",
- "TimerThread-test.cpp",
],
}
cc_test {
name: "media_process_tests",
- defaults: ["libmediautils_tests_host_unavail"],
+ defaults: ["libmediautils_tests_defaults"],
srcs: [
"media_process_tests.cpp",
@@ -114,7 +116,7 @@
cc_test {
name: "media_synchronization_tests",
- defaults: ["libmediautils_tests_host_unavail"],
+ defaults: ["libmediautils_tests_defaults"],
srcs: [
"media_synchronization_tests.cpp",
@@ -124,7 +126,7 @@
cc_test {
name: "media_threadsnapshot_tests",
- defaults: ["libmediautils_tests_host_unavail"],
+ defaults: ["libmediautils_tests_defaults"],
srcs: [
"media_threadsnapshot_tests.cpp",
@@ -186,7 +188,7 @@
cc_test {
name: "timecheck_tests",
- defaults: ["libmediautils_tests_host_unavail"],
+ defaults: ["libmediautils_tests_defaults"],
srcs: [
"timecheck_tests.cpp",
@@ -194,6 +196,16 @@
}
cc_test {
+ name: "timerthread_tests",
+
+ defaults: ["libmediautils_tests_defaults"],
+
+ srcs: [
+ "TimerThread-test.cpp",
+ ],
+}
+
+cc_test {
name: "extended_accumulator_tests",
defaults: ["libmediautils_tests_defaults"],
@@ -209,6 +221,6 @@
defaults: ["libmediautils_tests_defaults"],
srcs: [
- "inplace_function_tests.cpp"
+ "inplace_function_tests.cpp",
],
}
diff --git a/media/utils/tests/TimerThread-test.cpp b/media/utils/tests/TimerThread-test.cpp
index 8a92a26..468deed 100644
--- a/media/utils/tests/TimerThread-test.cpp
+++ b/media/utils/tests/TimerThread-test.cpp
@@ -52,7 +52,7 @@
std::atomic<bool> taskRan = false;
TimerThread thread;
TimerThread::Handle handle =
- thread.scheduleTask("Basic", [&taskRan](TimerThread::Handle handle __unused) {
+ thread.scheduleTask("Basic", [&taskRan](TimerThread::Handle) {
taskRan = true; }, DISTRIBUTE_TIMEOUT_SECONDCHANCE_MS_FRAC(100, frac));
ASSERT_TRUE(TimerThread::isTimeoutHandle(handle));
std::this_thread::sleep_for(100ms - kJitter);
@@ -70,7 +70,7 @@
std::atomic<bool> taskRan = false;
TimerThread thread;
TimerThread::Handle handle =
- thread.scheduleTask("Cancel", [&taskRan](TimerThread::Handle handle __unused) {
+ thread.scheduleTask("Cancel", [&taskRan](TimerThread::Handle) {
taskRan = true; }, DISTRIBUTE_TIMEOUT_SECONDCHANCE_MS_FRAC(100, frac));
ASSERT_TRUE(TimerThread::isTimeoutHandle(handle));
std::this_thread::sleep_for(100ms - kJitter);
@@ -90,7 +90,7 @@
TimerThread thread;
TimerThread::Handle handle =
thread.scheduleTask("CancelAfterRun",
- [&taskRan](TimerThread::Handle handle __unused) {
+ [&taskRan](TimerThread::Handle) {
taskRan = true; },
DISTRIBUTE_TIMEOUT_SECONDCHANCE_MS_FRAC(100, frac));
ASSERT_TRUE(TimerThread::isTimeoutHandle(handle));
@@ -110,17 +110,17 @@
auto startTime = std::chrono::steady_clock::now();
- thread.scheduleTask("0", [&taskRan](TimerThread::Handle handle __unused) {
+ thread.scheduleTask("0", [&taskRan](TimerThread::Handle) {
taskRan[0] = true; }, DISTRIBUTE_TIMEOUT_SECONDCHANCE_MS_FRAC(300, frac));
- thread.scheduleTask("1", [&taskRan](TimerThread::Handle handle __unused) {
+ thread.scheduleTask("1", [&taskRan](TimerThread::Handle) {
taskRan[1] = true; }, DISTRIBUTE_TIMEOUT_SECONDCHANCE_MS_FRAC(100, frac));
- thread.scheduleTask("2", [&taskRan](TimerThread::Handle handle __unused) {
+ thread.scheduleTask("2", [&taskRan](TimerThread::Handle) {
taskRan[2] = true; }, DISTRIBUTE_TIMEOUT_SECONDCHANCE_MS_FRAC(200, frac));
- thread.scheduleTask("3", [&taskRan](TimerThread::Handle handle __unused) {
+ thread.scheduleTask("3", [&taskRan](TimerThread::Handle) {
taskRan[3] = true; }, DISTRIBUTE_TIMEOUT_SECONDCHANCE_MS_FRAC(400, frac));
- auto handle4 = thread.scheduleTask("4", [&taskRan](TimerThread::Handle handle __unused) {
+ auto handle4 = thread.scheduleTask("4", [&taskRan](TimerThread::Handle) {
taskRan[4] = true; }, DISTRIBUTE_TIMEOUT_SECONDCHANCE_MS_FRAC(200, frac));
- thread.scheduleTask("5", [&taskRan](TimerThread::Handle handle __unused) {
+ thread.scheduleTask("5", [&taskRan](TimerThread::Handle) {
taskRan[5] = true; }, DISTRIBUTE_TIMEOUT_SECONDCHANCE_MS_FRAC(200, frac));
// 6 tasks pending
diff --git a/media/utils/tests/library_tests.cpp b/media/utils/tests/library_tests.cpp
index c5c500c..f15f7f9 100644
--- a/media/utils/tests/library_tests.cpp
+++ b/media/utils/tests/library_tests.cpp
@@ -26,8 +26,9 @@
namespace {
-static int32_t here = 0; // accessed on same thread.
+[[maybe_unused]] static int32_t here = 0; // accessed on same thread.
+#if __android__
TEST(library_tests, basic) {
std::string path = android::base::GetExecutableDirectory() + "/libsharedtest.so";
// The flags to loadLibrary should not include RTLD_GLOBAL or RTLD_NODELETE
@@ -64,6 +65,7 @@
// will prevent unloading libraries.
ASSERT_EQ(1, here);
}
+#endif
TEST(library_tests, sad_library) {
std::string path = android::base::GetExecutableDirectory()
diff --git a/media/utils/tests/media_process_tests.cpp b/media/utils/tests/media_process_tests.cpp
index 6e738b1..391c6a7 100644
--- a/media/utils/tests/media_process_tests.cpp
+++ b/media/utils/tests/media_process_tests.cpp
@@ -15,6 +15,7 @@
*/
#include <mediautils/Process.h>
+#include <mediautils/TidWrapper.h>
#define LOG_TAG "media_process_tests"
@@ -33,7 +34,7 @@
}
TEST(media_process_tests, basic) {
- const std::string schedString = getThreadSchedAsString(gettid());
+ const std::string schedString = getThreadSchedAsString(getThreadIdWrapper());
(void)schedString;
// We don't test schedString, only that we haven't crashed.
diff --git a/media/utils/tests/media_threadsnapshot_tests.cpp b/media/utils/tests/media_threadsnapshot_tests.cpp
index fc9aeab..57cf698 100644
--- a/media/utils/tests/media_threadsnapshot_tests.cpp
+++ b/media/utils/tests/media_threadsnapshot_tests.cpp
@@ -15,6 +15,7 @@
*/
#include <mediautils/ThreadSnapshot.h>
+#include <mediautils/TidWrapper.h>
#define LOG_TAG "media_threadsnapshot_tests"
@@ -38,7 +39,7 @@
TEST(media_threadsnapshot_tests, basic) {
using namespace std::chrono_literals;
- ThreadSnapshot threadSnapshot(gettid());
+ ThreadSnapshot threadSnapshot(getThreadIdWrapper());
threadSnapshot.onBegin();
diff --git a/services/mediaresourcemanager/ResourceManagerService.cpp b/services/mediaresourcemanager/ResourceManagerService.cpp
index 4d18876..adf0a5e 100644
--- a/services/mediaresourcemanager/ResourceManagerService.cpp
+++ b/services/mediaresourcemanager/ResourceManagerService.cpp
@@ -26,8 +26,9 @@
#include <cutils/sched_policy.h>
#include <dirent.h>
#include <media/MediaResourcePolicy.h>
-#include <media/stagefright/ProcessInfo.h>
+#include <media/stagefright/foundation/ABase.h>
#include <mediautils/BatteryNotifier.h>
+#include <mediautils/ProcessInfo.h>
#include <mediautils/SchedulingPolicyService.h>
#include <string.h>
#include <sys/types.h>
diff --git a/services/mediaresourcemanager/fuzzer/Android.bp b/services/mediaresourcemanager/fuzzer/Android.bp
index 81c85e5..08ac90e 100644
--- a/services/mediaresourcemanager/fuzzer/Android.bp
+++ b/services/mediaresourcemanager/fuzzer/Android.bp
@@ -40,6 +40,7 @@
"libbinder",
"libbinder_ndk",
"libmedia",
+ "libmediautils",
"libutils",
],
fuzz_config: {
diff --git a/services/mediaresourcemanager/fuzzer/mediaresourcemanager_fuzzer.cpp b/services/mediaresourcemanager/fuzzer/mediaresourcemanager_fuzzer.cpp
index e4aaea0..7003dcb 100644
--- a/services/mediaresourcemanager/fuzzer/mediaresourcemanager_fuzzer.cpp
+++ b/services/mediaresourcemanager/fuzzer/mediaresourcemanager_fuzzer.cpp
@@ -22,8 +22,8 @@
#include <aidl/android/media/BnResourceManagerClient.h>
#include <media/MediaResource.h>
#include <media/MediaResourcePolicy.h>
-#include <media/stagefright/ProcessInfoInterface.h>
#include <media/stagefright/foundation/ADebug.h>
+#include <mediautils/ProcessInfoInterface.h>
#include "ResourceManagerService.h"
#include "fuzzer/FuzzedDataProvider.h"
diff --git a/services/mediaresourcemanager/test/Android.bp b/services/mediaresourcemanager/test/Android.bp
index 618626f..0366d9b 100644
--- a/services/mediaresourcemanager/test/Android.bp
+++ b/services/mediaresourcemanager/test/Android.bp
@@ -18,6 +18,7 @@
"libbinder_ndk",
"liblog",
"libmedia",
+ "libmediautils",
"libutils",
],
include_dirs: [
@@ -63,6 +64,7 @@
"libbinder_ndk",
"liblog",
"libmedia",
+ "libmediautils",
"libutils",
],
include_dirs: [
diff --git a/services/mediaresourcemanager/test/ResourceManagerServiceTestUtils.h b/services/mediaresourcemanager/test/ResourceManagerServiceTestUtils.h
index 5bf44ce..7bd9484 100644
--- a/services/mediaresourcemanager/test/ResourceManagerServiceTestUtils.h
+++ b/services/mediaresourcemanager/test/ResourceManagerServiceTestUtils.h
@@ -21,7 +21,7 @@
#include <media/MediaResource.h>
#include <media/MediaResourcePolicy.h>
#include <media/stagefright/foundation/ADebug.h>
-#include <media/stagefright/ProcessInfoInterface.h>
+#include <mediautils/ProcessInfoInterface.h>
namespace android {