diff options
author | Glenn Kasten <gkasten@google.com> | 2012-03-16 07:15:23 -0700 |
---|---|---|
committer | Glenn Kasten <gkasten@google.com> | 2012-04-19 11:32:59 -0700 |
commit | a26e1cfbbcb7dc5e0b1cd79a815362d6a048ef26 (patch) | |
tree | d7fa5a89b2e0f6f1334b8a9b693add9ee78f9537 /libs | |
parent | 56a2bbe70876c1ac4e18b3740722c01d69bca2fd (diff) | |
download | frameworks_native-a26e1cfbbcb7dc5e0b1cd79a815362d6a048ef26.zip frameworks_native-a26e1cfbbcb7dc5e0b1cd79a815362d6a048ef26.tar.gz frameworks_native-a26e1cfbbcb7dc5e0b1cd79a815362d6a048ef26.tar.bz2 |
Scheduling group cleanup
Remove C++ APIs androidSetThreadSchedulingGroup and
androidGetThreadSchedulingGroup, and the ANDROID_TGROUP_* constants.
Former callers of these should now use the C APIs set_sched_policy and
get_sched_policy, and the SP_* constants.
Note: debug.sys.noschedgroups is not supported by the C APIs,
this needs to be discussed.
Change-Id: I32bbfc539ef4090faf9ef0320380e8cca9eae07c
Diffstat (limited to 'libs')
-rw-r--r-- | libs/binder/IPCThreadState.cpp | 12 | ||||
-rw-r--r-- | libs/utils/Threads.cpp | 57 |
2 files changed, 6 insertions, 63 deletions
diff --git a/libs/binder/IPCThreadState.cpp b/libs/binder/IPCThreadState.cpp index 96cef2c..7a3a3b9 100644 --- a/libs/binder/IPCThreadState.cpp +++ b/libs/binder/IPCThreadState.cpp @@ -20,6 +20,7 @@ #include <binder/Binder.h> #include <binder/BpBinder.h> +#include <cutils/sched_policy.h> #include <utils/Debug.h> #include <utils/Log.h> #include <utils/TextOutput.h> @@ -428,9 +429,9 @@ void IPCThreadState::joinThreadPool(bool isMain) mOut.writeInt32(isMain ? BC_ENTER_LOOPER : BC_REGISTER_LOOPER); // This thread may have been spawned by a thread that was in the background - // scheduling group, so first we will make sure it is in the default/foreground + // scheduling group, so first we will make sure it is in the foreground // one to avoid performing an initial transaction in the background. - androidSetThreadSchedulingGroup(mMyThreadId, ANDROID_TGROUP_DEFAULT); + set_sched_policy(mMyThreadId, SP_FOREGROUND); status_t result; do { @@ -473,13 +474,13 @@ void IPCThreadState::joinThreadPool(bool isMain) } // After executing the command, ensure that the thread is returned to the - // default cgroup before rejoining the pool. The driver takes care of + // foreground cgroup before rejoining the pool. The driver takes care of // restoring the priority, but doesn't do anything with cgroups so we // need to take care of that here in userspace. Note that we do make // sure to go in the foreground after executing a transaction, but // there are other callbacks into user code that could have changed // our group so we want to make absolutely sure it is put back. - androidSetThreadSchedulingGroup(mMyThreadId, ANDROID_TGROUP_DEFAULT); + set_sched_policy(mMyThreadId, SP_FOREGROUND); // Let this thread exit the thread pool if it is no longer // needed and it is not the main process thread. @@ -1010,8 +1011,7 @@ status_t IPCThreadState::executeCommand(int32_t cmd) // since the driver won't modify scheduling classes for us. // The scheduling group is reset to default by the caller // once this method returns after the transaction is complete. - androidSetThreadSchedulingGroup(mMyThreadId, - ANDROID_TGROUP_BG_NONINTERACT); + set_sched_policy(mMyThreadId, SP_BACKGROUND); } } diff --git a/libs/utils/Threads.cpp b/libs/utils/Threads.cpp index f9277de..bc1c285 100644 --- a/libs/utils/Threads.cpp +++ b/libs/utils/Threads.cpp @@ -324,29 +324,6 @@ pid_t androidGetTid() } #ifdef HAVE_ANDROID_OS -int androidSetThreadSchedulingGroup(pid_t tid, int grp) -{ - if (grp > ANDROID_TGROUP_MAX || grp < 0) { - return BAD_VALUE; - } - -#if defined(HAVE_PTHREADS) - pthread_once(&gDoSchedulingGroupOnce, checkDoSchedulingGroup); - if (gDoSchedulingGroup) { - // set_sched_policy does not support tid == 0 - if (tid == 0) { - tid = androidGetTid(); - } - if (set_sched_policy(tid, (grp == ANDROID_TGROUP_BG_NONINTERACT) ? - SP_BACKGROUND : SP_FOREGROUND)) { - return PERMISSION_DENIED; - } - } -#endif - - return NO_ERROR; -} - int androidSetThreadPriority(pid_t tid, int pri) { int rc = 0; @@ -392,40 +369,6 @@ int androidGetThreadPriority(pid_t tid) { #endif } -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; -} #endif namespace android { |