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

Commit b473061c authored by Greg Kaiser's avatar Greg Kaiser
Browse files

Fix API for C compatibility

In https://android-review.googlesource.com/c/platform/system/core/+/1224544
when we introduced a default argument to androidSetThreadPriority(),
we broke C compatibility with this API, and with the header file
in general.

We fix this up by instead introducing a new method that takes
three arguments.  This gets this header file compiling for C again,
and keeps this particular API C compatible.

Any C++ callers of the three argument version of
androidSetThreadPriority() will need to switch to using
androidSetThreadPriorityAndPolicy().  Although since this was
a recent change, we believe there is only one such user, which
we are fixing at the same time.

Test: TreeHugger
Bug: 165009705
Merged-In: Iab0b7e6c91a8e32a17ba1b186fd0c2fe96b601e4
Change-Id: Iab0b7e6c91a8e32a17ba1b186fd0c2fe96b601e4
parent 5b940dc7
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -302,7 +302,8 @@ void androidSetCreateThreadFunc(android_create_thread_fn func)
}

#if defined(__ANDROID__)
int androidSetThreadPriority(pid_t tid, int pri, bool change_policy) {
namespace {
int androidSetThreadPriorityInternal(pid_t tid, int pri, bool change_policy) {
    int rc = 0;
    int lasterr = 0;
    int curr_pri = getpriority(PRIO_PROCESS, tid);
@@ -334,6 +335,15 @@ int androidSetThreadPriority(pid_t tid, int pri, bool change_policy) {

    return rc;
}
}  // namespace

int androidSetThreadPriority(pid_t tid, int pri) {
    return androidSetThreadPriorityInternal(tid, pri, true);
}

int androidSetThreadPriorityAndPolicy(pid_t tid, int pri, bool change_policy) {
    return androidSetThreadPriorityInternal(tid, pri, change_policy);
}

int androidGetThreadPriority(pid_t tid) {
    return getpriority(PRIO_PROCESS, tid);
+4 −1
Original line number Diff line number Diff line
@@ -78,9 +78,12 @@ 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.
// This is equivalent to androidSetThreadPriorityAndPolicy(tid, prio, true);
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);
extern int androidSetThreadPriorityAndPolicy(pid_t tid, int prio, bool change_policy);

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