Set the thread pool count to 4 for vts3 tests.

Thread priority is from
https://source.corp.google.com/android/frameworks/native/services/surfaceflinger/main_surfaceflinger.cpp;rcl=e9cdd276a89d512137f22650da0c45ee4b28bd66;l=97

Test: atest VtsHalGraphicsComposer3_TargetTest
BUG: 207005096
Change-Id: Ic37b454c4ae3990fd8cb38fcdd50747083b2528c
This commit is contained in:
ramindani
2021-12-07 21:02:49 +00:00
committed by Midas Chien
parent ee18fa3bad
commit beea10e8e6

View File

@@ -1950,5 +1950,41 @@ int main(int argc, char** argv) {
ALOGE("Failed to stop init.svc.surfaceflinger");
return -1;
}
android::ProcessState::self()->setThreadPoolMaxThreadCount(4);
// The binder threadpool we start will inherit sched policy and priority
// of (this) creating thread. We want the binder thread pool to have
// SCHED_FIFO policy and priority 1 (lowest RT priority)
// Once the pool is created we reset this thread's priority back to
// original.
// This thread policy is based on what we do in the SurfaceFlinger while starting
// the thread pool and we need to replicate that for the VTS tests.
int newPriority = 0;
int origPolicy = sched_getscheduler(0);
struct sched_param origSchedParam;
int errorInPriorityModification = sched_getparam(0, &origSchedParam);
if (errorInPriorityModification == 0) {
int policy = SCHED_FIFO;
newPriority = sched_get_priority_min(policy);
struct sched_param param;
param.sched_priority = newPriority;
errorInPriorityModification = sched_setscheduler(0, policy, &param);
}
// start the thread pool
android::ProcessState::self()->startThreadPool();
// Reset current thread's policy and priority
if (errorInPriorityModification == 0) {
errorInPriorityModification = sched_setscheduler(0, origPolicy, &origSchedParam);
} else {
ALOGE("Failed to set VtsHalGraphicsComposer3_TargetTest binder threadpool priority to "
"SCHED_FIFO");
}
return RUN_ALL_TESTS();
}