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

Commit beea10e8 authored by ramindani's avatar ramindani Committed by Midas Chien
Browse files

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
parent ee18fa3b
Loading
Loading
Loading
Loading
+36 −0
Original line number Original line Diff line number Diff line
@@ -1950,5 +1950,41 @@ int main(int argc, char** argv) {
        ALOGE("Failed to stop init.svc.surfaceflinger");
        ALOGE("Failed to stop init.svc.surfaceflinger");
        return -1;
        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();
    return RUN_ALL_TESTS();
}
}