From: Andrew Morton Date: Tue, 9 Feb 2016 23:12:31 +0000 (+1100) Subject: sched: add schedule_timeout_idle() X-Git-Tag: next-20160210~3^2~203 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=41a10a7345fd02d0b36a99ea9c41bf8f5b9ce784;p=karo-tx-linux.git sched: add schedule_timeout_idle() This will be needed in the patch "mm, oom: introduce oom reaper". Acked-by: Michal Hocko Cc: Ingo Molnar Cc: Peter Zijlstra Signed-off-by: Andrew Morton --- diff --git a/include/linux/sched.h b/include/linux/sched.h index a10494a94cc3..8a175f6b9273 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -427,6 +427,7 @@ extern signed long schedule_timeout(signed long timeout); extern signed long schedule_timeout_interruptible(signed long timeout); extern signed long schedule_timeout_killable(signed long timeout); extern signed long schedule_timeout_uninterruptible(signed long timeout); +extern signed long schedule_timeout_idle(signed long timeout); asmlinkage void schedule(void); extern void schedule_preempt_disabled(void); diff --git a/kernel/time/timer.c b/kernel/time/timer.c index bbc5d1114583..2c4034761c7f 100644 --- a/kernel/time/timer.c +++ b/kernel/time/timer.c @@ -1566,6 +1566,17 @@ signed long __sched schedule_timeout_uninterruptible(signed long timeout) } EXPORT_SYMBOL(schedule_timeout_uninterruptible); +/* + * Like schedule_timeout_uninterruptible(), except this task will not contribute + * to load average. + */ +signed long __sched schedule_timeout_idle(signed long timeout) +{ + __set_current_state(TASK_IDLE); + return schedule_timeout(timeout); +} +EXPORT_SYMBOL(schedule_timeout_idle); + #ifdef CONFIG_HOTPLUG_CPU static void migrate_timer_list(struct tvec_base *new_base, struct hlist_head *head) {