summaryrefslogtreecommitdiffstats
path: root/libs
diff options
context:
space:
mode:
authorGlenn Kasten <gkasten@google.com>2012-03-16 07:15:23 -0700
committerGlenn Kasten <gkasten@google.com>2012-04-19 11:32:59 -0700
commita26e1cfbbcb7dc5e0b1cd79a815362d6a048ef26 (patch)
treed7fa5a89b2e0f6f1334b8a9b693add9ee78f9537 /libs
parent56a2bbe70876c1ac4e18b3740722c01d69bca2fd (diff)
downloadframeworks_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.cpp12
-rw-r--r--libs/utils/Threads.cpp57
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 {