|
@@ -5131,13 +5131,15 @@ pick_next_task(struct rq *rq)
|
|
|
/*
|
|
|
* schedule() is the main scheduler function.
|
|
|
*/
|
|
|
-asmlinkage void __sched __schedule(void)
|
|
|
+asmlinkage void __sched schedule(void)
|
|
|
{
|
|
|
struct task_struct *prev, *next;
|
|
|
unsigned long *switch_count;
|
|
|
struct rq *rq;
|
|
|
int cpu;
|
|
|
|
|
|
+need_resched:
|
|
|
+ preempt_disable();
|
|
|
cpu = smp_processor_id();
|
|
|
rq = cpu_rq(cpu);
|
|
|
rcu_qsctr_inc(cpu);
|
|
@@ -5194,15 +5196,9 @@ need_resched_nonpreemptible:
|
|
|
|
|
|
if (unlikely(reacquire_kernel_lock(current) < 0))
|
|
|
goto need_resched_nonpreemptible;
|
|
|
-}
|
|
|
|
|
|
-asmlinkage void __sched schedule(void)
|
|
|
-{
|
|
|
-need_resched:
|
|
|
- preempt_disable();
|
|
|
- __schedule();
|
|
|
preempt_enable_no_resched();
|
|
|
- if (unlikely(test_thread_flag(TIF_NEED_RESCHED)))
|
|
|
+ if (need_resched())
|
|
|
goto need_resched;
|
|
|
}
|
|
|
EXPORT_SYMBOL(schedule);
|