]> Pileus Git - ~andy/linux/commitdiff
sched/rt: Document scheduler related skip-resched-check sites
authorThomas Gleixner <tglx@linutronix.de>
Mon, 21 Mar 2011 12:32:17 +0000 (13:32 +0100)
committerIngo Molnar <mingo@elte.hu>
Thu, 1 Mar 2012 09:28:04 +0000 (10:28 +0100)
Create a distinction between scheduler related preempt_enable_no_resched()
calls and the nearly one hundred other places in the kernel that do not
want to reschedule, for one reason or another.

This distinction matters for -rt, where the scheduler and the non-scheduler
preempt models (and checks) are different. For upstream it's purely
documentational.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/n/tip-gs88fvx2mdv5psnzxnv575ke@git.kernel.org
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/powerpc/kernel/idle.c
arch/sparc/kernel/process_64.c
include/linux/preempt.h
kernel/sched/core.c
kernel/softirq.c

index 65035141552b2543a2786d219346036a00a4ca3a..c97fc60c790cbcaf57c66dd550006b5b22658541 100644 (file)
@@ -102,7 +102,7 @@ void cpu_idle(void)
                rcu_idle_exit();
                tick_nohz_idle_exit();
                if (cpu_should_die()) {
-                       preempt_enable_no_resched();
+                       sched_preempt_enable_no_resched();
                        cpu_die();
                }
                schedule_preempt_disabled();
index ab9a292682130375825b1e2eff14a81aca598db6..06b5b5fc20c78f2e859875b79a372fec3e76f7e2 100644 (file)
@@ -106,7 +106,7 @@ void cpu_idle(void)
 
 #ifdef CONFIG_HOTPLUG_CPU
                if (cpu_is_offline(cpu)) {
-                       preempt_enable_no_resched();
+                       sched_preempt_enable_no_resched();
                        cpu_play_dead();
                }
 #endif
index 58969b2a8a8292deb33a215006eade8659764d6d..5a710b9c578e2881478872d505e8b649e8bdb55f 100644 (file)
@@ -48,12 +48,14 @@ do { \
        barrier(); \
 } while (0)
 
-#define preempt_enable_no_resched() \
+#define sched_preempt_enable_no_resched() \
 do { \
        barrier(); \
        dec_preempt_count(); \
 } while (0)
 
+#define preempt_enable_no_resched()    sched_preempt_enable_no_resched()
+
 #define preempt_enable() \
 do { \
        preempt_enable_no_resched(); \
@@ -92,6 +94,7 @@ do { \
 #else /* !CONFIG_PREEMPT_COUNT */
 
 #define preempt_disable()              do { } while (0)
+#define sched_preempt_enable_no_resched()      do { } while (0)
 #define preempt_enable_no_resched()    do { } while (0)
 #define preempt_enable()               do { } while (0)
 
index 73022395c00e7898a775d2a30ce14b45de9d6ff7..643cc37fcb23147dcfbe4ce9939fa053b8f350b6 100644 (file)
@@ -3220,7 +3220,7 @@ need_resched:
 
        post_schedule(rq);
 
-       preempt_enable_no_resched();
+       sched_preempt_enable_no_resched();
        if (need_resched())
                goto need_resched;
 }
@@ -3253,7 +3253,7 @@ EXPORT_SYMBOL(schedule);
  */
 void __sched schedule_preempt_disabled(void)
 {
-       preempt_enable_no_resched();
+       sched_preempt_enable_no_resched();
        schedule();
        preempt_disable();
 }
@@ -4486,7 +4486,7 @@ SYSCALL_DEFINE0(sched_yield)
        __release(rq->lock);
        spin_release(&rq->lock.dep_map, 1, _THIS_IP_);
        do_raw_spin_unlock(&rq->lock);
-       preempt_enable_no_resched();
+       sched_preempt_enable_no_resched();
 
        schedule();
 
index 79b524767a24b9f2705f46eeedd3eecdbd33dbb6..f268369ebe1fa8936a058da00713fc9c1bd97b07 100644 (file)
@@ -353,7 +353,7 @@ void irq_exit(void)
                tick_nohz_irq_exit();
 #endif
        rcu_irq_exit();
-       preempt_enable_no_resched();
+       sched_preempt_enable_no_resched();
 }
 
 /*
@@ -759,7 +759,7 @@ static int run_ksoftirqd(void * __bind_cpu)
                        if (local_softirq_pending())
                                __do_softirq();
                        local_irq_enable();
-                       preempt_enable_no_resched();
+                       sched_preempt_enable_no_resched();
                        cond_resched();
                        preempt_disable();
                        rcu_note_context_switch((long)__bind_cpu);