diff options
author | Dominik Brodowski <linux@dominikbrodowski.net> | 2018-03-14 22:40:35 +0100 |
---|---|---|
committer | Dominik Brodowski <linux@dominikbrodowski.net> | 2018-04-02 20:15:31 +0200 |
commit | 7d4dd4f159b94003655b1688d9a4c0e2b6268ff8 (patch) | |
tree | ba86cee2e4ce224148661fcd8255416c136af374 /kernel/sched | |
parent | e530dca584a9aa4aedf26adf0ed3c1c9b80e2767 (diff) | |
download | linux-stable-7d4dd4f159b94003655b1688d9a4c0e2b6268ff8.tar.gz linux-stable-7d4dd4f159b94003655b1688d9a4c0e2b6268ff8.tar.bz2 linux-stable-7d4dd4f159b94003655b1688d9a4c0e2b6268ff8.zip |
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>
Diffstat (limited to 'kernel/sched')
-rw-r--r-- | kernel/sched/core.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/kernel/sched/core.c b/kernel/sched/core.c index e7c535eee0a6..8de4919c889a 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -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); |