summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2011-03-21 12:09:35 +0100
committerClark Williams <williams@redhat.com>2012-02-15 10:32:30 -0600
commitb880ce1fcff925e18a884c9c7acd1fcbdcf9d3ee (patch)
tree38ab76194c113bcca5f042b8e79b1fd3dded7ebd /kernel
parent9dcaf67be9708b126cad758e60e3424239b7a1d3 (diff)
sched: Create schedule_preempt_disabled()
Get rid of the ever repeating: preempt_enable_no_resched(); schedule(); preempt_disable(); Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'kernel')
-rw-r--r--kernel/sched.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/kernel/sched.c b/kernel/sched.c
index 6b3239590d5a..465fd119d3b2 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -4456,6 +4456,18 @@ asmlinkage void __sched schedule(void)
}
EXPORT_SYMBOL(schedule);
+/**
+ * schedule_preempt_disabled - called with preemption disabled
+ *
+ * Returns with preemption disabled. Note: preempt_count must be 1
+ */
+void __sched schedule_preempt_disabled(void)
+{
+ preempt_enable_no_resched();
+ schedule();
+ preempt_disable();
+}
+
#ifdef CONFIG_MUTEX_SPIN_ON_OWNER
static inline bool owner_running(struct mutex *lock, struct task_struct *owner)