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

Commit 57affbf9 authored by Rick Yiu's avatar Rick Yiu
Browse files

Add choice for changing sched policy when setting thread priority

If the policy has been changed already, we do not need to change
it again.

Bug: 139521784
Test: functionality verified
Change-Id: I251db1d3f874896ba9be68df87209e7e514b80f9
parent 5133bbfd
Loading
Loading
Loading
Loading
+13 −12
Original line number Diff line number Diff line
@@ -302,8 +302,7 @@ void androidSetCreateThreadFunc(android_create_thread_fn func)
}

#if defined(__ANDROID__)
int androidSetThreadPriority(pid_t tid, int pri)
{
int androidSetThreadPriority(pid_t tid, int pri, bool change_policy) {
    int rc = 0;
    int lasterr = 0;
    int curr_pri = getpriority(PRIO_PROCESS, tid);
@@ -312,6 +311,7 @@ int androidSetThreadPriority(pid_t tid, int pri)
        return rc;
    }

    if (change_policy) {
        if (pri >= ANDROID_PRIORITY_BACKGROUND) {
            rc = SetTaskProfiles(tid, {"SCHED_SP_BACKGROUND"}, true) ? 0 : -1;
        } else if (curr_pri >= ANDROID_PRIORITY_BACKGROUND) {
@@ -324,6 +324,7 @@ int androidSetThreadPriority(pid_t tid, int pri)
        if (rc) {
            lasterr = errno;
        }
    }

    if (setpriority(PRIO_PROCESS, tid, pri) < 0) {
        rc = INVALID_OPERATION;
+3 −1
Original line number Diff line number Diff line
@@ -78,7 +78,9 @@ extern void androidSetCreateThreadFunc(android_create_thread_fn func);
// should be one of the ANDROID_PRIORITY constants.  Returns INVALID_OPERATION
// if the priority set failed, else another value if just the group set failed;
// in either case errno is set.  Thread ID zero means current thread.
extern int androidSetThreadPriority(pid_t tid, int prio);
// Parameter "change_policy" indicates if sched policy should be changed. It needs
// not be checked again if the change is done elsewhere like activity manager.
extern int androidSetThreadPriority(pid_t tid, int prio, bool change_policy = true);

// Get the current priority of a particular thread. Returns one of the
// ANDROID_PRIORITY constants or a negative result in case of error.