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

Commit de930063 authored by Glenn Kasten's avatar Glenn Kasten Committed by Android (Google) Code Review
Browse files

Merge "Scheduling group cleanup - add comment, SP_DEFAULT"

parents 92e6c882 69bfb1f0
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -21,21 +21,26 @@
extern "C" {
#endif

/* Keep in sync with THREAD_GROUP_* in frameworks/base/core/java/android/os/Process.java */
typedef enum {
    SP_DEFAULT    = -1,
    SP_BACKGROUND = 0,
    SP_FOREGROUND = 1,
    SP_CNT,
    SP_MAX        = SP_CNT - 1,
    SP_SYSTEM_DEFAULT = SP_FOREGROUND,
} SchedPolicy;

/* Assign thread tid to the cgroup associated with the specified policy.
 * If the thread is a thread group leader, that is it's gettid() == getpid(),
 * then the other threads in the same thread group are _not_ affected.
 * On platforms which support gettid(), zero tid means current thread.
 * Return value: 0 for success, or -errno for error.
 */
extern int set_sched_policy(int tid, SchedPolicy policy);

/* Return the policy associated with the cgroup of thread tid via policy pointer.
 * On platforms which support gettid(), zero tid means current thread.
 * Return value: 0 for success, or -1 for error and set errno.
 */
extern int get_sched_policy(int tid, SchedPolicy *policy);
+21 −0
Original line number Diff line number Diff line
@@ -189,6 +189,11 @@ static int getSchedulerGroup(int tid, char* buf, size_t bufLen)

int get_sched_policy(int tid, SchedPolicy *policy)
{
#ifdef HAVE_GETTID
    if (tid == 0) {
        tid = gettid();
    }
#endif
    pthread_once(&the_once, __initialize);

    if (__sys_supports_schedgroups) {
@@ -219,8 +224,23 @@ int get_sched_policy(int tid, SchedPolicy *policy)
    return 0;
}

/* Re-map SP_DEFAULT to the system default policy, and leave other values unchanged.
 * Call this any place a SchedPolicy is used as an input parameter.
 * Returns the possibly re-mapped policy.
 */
static inline SchedPolicy _policy(SchedPolicy p)
{
   return p == SP_DEFAULT ? SP_SYSTEM_DEFAULT : p;
}

int set_sched_policy(int tid, SchedPolicy policy)
{
#ifdef HAVE_GETTID
    if (tid == 0) {
        tid = gettid();
    }
#endif
    policy = _policy(policy);
    pthread_once(&the_once, __initialize);

#if POLICY_DEBUG
@@ -275,6 +295,7 @@ int set_sched_policy(int tid, SchedPolicy policy)

const char *get_sched_policy_name(SchedPolicy policy)
{
    policy = _policy(policy);
    static const char * const strings[SP_CNT] = {
       [SP_BACKGROUND] = "bg",
       [SP_FOREGROUND] = "fg",