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

Commit 9ada65c0 authored by Rick Yiu's avatar Rick Yiu Committed by Gerrit Code Review
Browse files

Merge "Add choice for changing sched policy when setting thread priority"

parents 1fbb1b87 57affbf9
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.