mirror of https://gitee.com/openkylin/linux.git
sched: add do_sched_yield() helper; remove in-kernel call to sched_yield()
Using the sched-internal do_sched_yield() helper allows us to get rid of the sched-internal call to the sys_sched_yield() syscall. This patch is part of a series which removes in-kernel calls to syscalls. On this basis, the syscall entry path can be streamlined. For details, see http://lkml.kernel.org/r/20180325162527.GA17492@light.dominikbrodowski.net Cc: Ingo Molnar <mingo@redhat.com> Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
This commit is contained in:
parent
e530dca584
commit
7d4dd4f159
|
@ -4892,7 +4892,7 @@ SYSCALL_DEFINE3(sched_getaffinity, pid_t, pid, unsigned int, len,
|
|||
*
|
||||
* Return: 0.
|
||||
*/
|
||||
SYSCALL_DEFINE0(sched_yield)
|
||||
static void do_sched_yield(void)
|
||||
{
|
||||
struct rq_flags rf;
|
||||
struct rq *rq;
|
||||
|
@ -4913,7 +4913,11 @@ SYSCALL_DEFINE0(sched_yield)
|
|||
sched_preempt_enable_no_resched();
|
||||
|
||||
schedule();
|
||||
}
|
||||
|
||||
SYSCALL_DEFINE0(sched_yield)
|
||||
{
|
||||
do_sched_yield();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -4997,7 +5001,7 @@ EXPORT_SYMBOL(__cond_resched_softirq);
|
|||
void __sched yield(void)
|
||||
{
|
||||
set_current_state(TASK_RUNNING);
|
||||
sys_sched_yield();
|
||||
do_sched_yield();
|
||||
}
|
||||
EXPORT_SYMBOL(yield);
|
||||
|
||||
|
|
Loading…
Reference in New Issue