Scheduling group cleanup - add comment, SP_DEFAULT
Also tid == 0 maps to gettid() on platforms that support it.
This is needed by mediaserver code that was formerly using
the old C++ API.
Change-Id: I8baaa3e42315c9b924cec26b6da01e7cb69e0078
diff --git a/libcutils/sched_policy.c b/libcutils/sched_policy.c
index 35d362a..345532b 100644
--- a/libcutils/sched_policy.c
+++ b/libcutils/sched_policy.c
@@ -189,6 +189,11 @@
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 @@
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 @@
const char *get_sched_policy_name(SchedPolicy policy)
{
+ policy = _policy(policy);
static const char * const strings[SP_CNT] = {
[SP_BACKGROUND] = "bg",
[SP_FOREGROUND] = "fg",