summaryrefslogtreecommitdiffstats
path: root/libcutils
diff options
context:
space:
mode:
Diffstat (limited to 'libcutils')
-rw-r--r--libcutils/sched_policy.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/libcutils/sched_policy.c b/libcutils/sched_policy.c
index d20d217..bc49e88 100644
--- a/libcutils/sched_policy.c
+++ b/libcutils/sched_policy.c
@@ -26,6 +26,7 @@
#include <fcntl.h>
#include <cutils/sched_policy.h>
#include <cutils/log.h>
+#include <linux/prctl.h>
/* 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.
@@ -53,6 +54,9 @@ static inline SchedPolicy _policy(SchedPolicy p)
#define CAN_SET_SP_SYSTEM 0 // non-zero means to implement set_sched_policy(tid, SP_SYSTEM)
+// timer slack value in nS enforced when the thread moves to background
+#define TIMER_SLACK_BG 40000000
+
static pthread_once_t the_once = PTHREAD_ONCE_INIT;
static int __sys_supports_schedgroups = -1;
@@ -324,6 +328,8 @@ int set_sched_policy(int tid, SchedPolicy policy)
&param);
}
+ prctl(PR_SET_TIMERSLACK_PID, policy == SP_BACKGROUND ? TIMER_SLACK_BG : 0, tid);
+
return 0;
}