Add C++ thread API androidGetThreadSchedulingGroup
This API is intended for applications that need to read a thread's scheduling group, while using the higher-level (C++) family of thread APIs. Change-Id: I5e58017f74c3989b20b5b1cc2bc4483c95720520
This commit is contained in:
parent
555b49d09b
commit
4fb2427591
@ -142,6 +142,13 @@ extern int androidSetThreadSchedulingGroup(pid_t tid, int grp);
|
||||
// in either case errno is set. Thread ID zero means current thread.
|
||||
extern int androidSetThreadPriority(pid_t tid, int prio);
|
||||
|
||||
// Get the current scheduling group of a particular thread. Normally returns
|
||||
// one of the ANDROID_TGROUP constants other than ANDROID_TGROUP_DEFAULT.
|
||||
// Returns ANDROID_TGROUP_DEFAULT if no pthread support (e.g. on host) or if
|
||||
// scheduling groups are disabled. Returns INVALID_OPERATION if unexpected error.
|
||||
// Thread ID zero means current thread.
|
||||
extern int androidGetThreadSchedulingGroup(pid_t tid);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@ -367,6 +367,41 @@ int androidSetThreadPriority(pid_t tid, int pri)
|
||||
return rc;
|
||||
}
|
||||
|
||||
int androidGetThreadSchedulingGroup(pid_t tid)
|
||||
{
|
||||
int ret = ANDROID_TGROUP_DEFAULT;
|
||||
|
||||
#if defined(HAVE_PTHREADS)
|
||||
// convention is to not call get/set_sched_policy methods if disabled by property
|
||||
pthread_once(&gDoSchedulingGroupOnce, checkDoSchedulingGroup);
|
||||
if (gDoSchedulingGroup) {
|
||||
SchedPolicy policy;
|
||||
// get_sched_policy does not support tid == 0
|
||||
if (tid == 0) {
|
||||
tid = androidGetTid();
|
||||
}
|
||||
if (get_sched_policy(tid, &policy) < 0) {
|
||||
ret = INVALID_OPERATION;
|
||||
} else {
|
||||
switch (policy) {
|
||||
case SP_BACKGROUND:
|
||||
ret = ANDROID_TGROUP_BG_NONINTERACT;
|
||||
break;
|
||||
case SP_FOREGROUND:
|
||||
ret = ANDROID_TGROUP_FG_BOOST;
|
||||
break;
|
||||
default:
|
||||
// should not happen, as enum SchedPolicy does not have any other values
|
||||
ret = INVALID_OPERATION;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
namespace android {
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user