diff options
author | Glenn Kasten <gkasten@google.com> | 2011-08-29 14:38:52 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-08-29 14:38:52 -0700 |
commit | 940673f92ed8a0f4e6448b86ec08cee91ef3fc45 (patch) | |
tree | b67596f3dcbc24f361e43bb7891ed3ea70b67d37 /libs | |
parent | 6552e46f99dc810e0e85ceac41b3fc1bf55d5507 (diff) | |
parent | 4fb24275919aab88d0ce346f530c9911d6c08422 (diff) | |
download | frameworks_native-940673f92ed8a0f4e6448b86ec08cee91ef3fc45.zip frameworks_native-940673f92ed8a0f4e6448b86ec08cee91ef3fc45.tar.gz frameworks_native-940673f92ed8a0f4e6448b86ec08cee91ef3fc45.tar.bz2 |
Merge "Add C++ thread API androidGetThreadSchedulingGroup"
Diffstat (limited to 'libs')
-rw-r--r-- | libs/utils/Threads.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/libs/utils/Threads.cpp b/libs/utils/Threads.cpp index d18c0a2..02c380b 100644 --- a/libs/utils/Threads.cpp +++ b/libs/utils/Threads.cpp @@ -368,6 +368,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 { /* |