audioserver: Fix boottime delay due to priority boost
Test: ensure thread priority set
Bug: 297322674
Change-Id: I3fa99b3e5845518041ba81d7e2946245251d4a63
diff --git a/media/utils/SchedulingPolicyService.cpp b/media/utils/SchedulingPolicyService.cpp
index 6e515ff..62c3f81 100644
--- a/media/utils/SchedulingPolicyService.cpp
+++ b/media/utils/SchedulingPolicyService.cpp
@@ -17,7 +17,9 @@
#define LOG_TAG "SchedulingPolicyService"
//#define LOG_NDEBUG 0
+#include <audio_utils/threads.h>
#include <binder/IServiceManager.h>
+#include <cutils/android_filesystem_config.h>
#include <cutils/properties.h>
#include <utils/Mutex.h>
#include "ISchedulingPolicyService.h"
@@ -31,6 +33,15 @@
int requestPriority(pid_t pid, pid_t tid, int32_t prio, bool isForApp, bool asynchronous)
{
+ // audioserver thread priority boosted internally to reduce binder latency and boot time.
+ if (!isForApp && pid == getpid() && getuid() == AID_AUDIOSERVER && prio >= 1 && prio <= 3) {
+ const status_t status = audio_utils::set_thread_priority(
+ tid, audio_utils::rtprio_to_unified_priority(prio));
+ if (status == NO_ERROR) return NO_ERROR;
+ ALOGD("%s: set priority %d, status:%d needs to fallback to SchedulingPolicyService",
+ __func__, prio, status);
+ }
+
// FIXME merge duplicated code related to service lookup, caching, and error recovery
int ret;
for (;;) {