Skip to content

Commit de1474b

Browse files
KAGA-KOKOPeter Zijlstra
authored andcommitted
sched: Extract __schedule_loop()
There are currently two implementations of this basic __schedule() loop, and there is soon to be a third. Signed-off-by: Thomas Gleixner <[email protected]> Signed-off-by: Sebastian Andrzej Siewior <[email protected]> Signed-off-by: Peter Zijlstra (Intel) <[email protected]> Link: https://lkml.kernel.org/r/[email protected]
1 parent af9f006 commit de1474b

File tree

1 file changed

+11
-10
lines changed

1 file changed

+11
-10
lines changed

kernel/sched/core.c

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6770,16 +6770,21 @@ static void sched_update_worker(struct task_struct *tsk)
67706770
}
67716771
}
67726772

6773-
asmlinkage __visible void __sched schedule(void)
6773+
static __always_inline void __schedule_loop(unsigned int sched_mode)
67746774
{
6775-
struct task_struct *tsk = current;
6776-
6777-
sched_submit_work(tsk);
67786775
do {
67796776
preempt_disable();
6780-
__schedule(SM_NONE);
6777+
__schedule(sched_mode);
67816778
sched_preempt_enable_no_resched();
67826779
} while (need_resched());
6780+
}
6781+
6782+
asmlinkage __visible void __sched schedule(void)
6783+
{
6784+
struct task_struct *tsk = current;
6785+
6786+
sched_submit_work(tsk);
6787+
__schedule_loop(SM_NONE);
67836788
sched_update_worker(tsk);
67846789
}
67856790
EXPORT_SYMBOL(schedule);
@@ -6843,11 +6848,7 @@ void __sched schedule_preempt_disabled(void)
68436848
#ifdef CONFIG_PREEMPT_RT
68446849
void __sched notrace schedule_rtlock(void)
68456850
{
6846-
do {
6847-
preempt_disable();
6848-
__schedule(SM_RTLOCK_WAIT);
6849-
sched_preempt_enable_no_resched();
6850-
} while (need_resched());
6851+
__schedule_loop(SM_RTLOCK_WAIT);
68516852
}
68526853
NOKPROBE_SYMBOL(schedule_rtlock);
68536854
#endif

0 commit comments

Comments
 (0)