sched: Add yield_to(task, preempt) functionality
authorMike Galbraith <efault@gmx.de>
Tue, 1 Feb 2011 14:50:51 +0000 (09:50 -0500)
committerIngo Molnar <mingo@elte.hu>
Thu, 3 Feb 2011 13:20:33 +0000 (14:20 +0100)
commitd95f412200652694e63e64bfd49f0ae274a54479
treed2abb7b2c635bbc9f344b45051b6186b1317718c
parentac53db596cc08ecb8040cfb6f71ae40c6f2041c4
sched: Add yield_to(task, preempt) functionality

Currently only implemented for fair class tasks.

Add a yield_to_task method() to the fair scheduling class. allowing the
caller of yield_to() to accelerate another thread in it's thread group,
task group.

Implemented via a scheduler hint, using cfs_rq->next to encourage the
target being selected.  We can rely on pick_next_entity to keep things
fair, so noone can accelerate a thread that has already used its fair
share of CPU time.

This also means callers should only call yield_to when they really
mean it.  Calling it too often can result in the scheduler just
ignoring the hint.

Signed-off-by: Rik van Riel <riel@redhat.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Signed-off-by: Mike Galbraith <efault@gmx.de>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
LKML-Reference: <20110201095051.4ddb7738@annuminas.surriel.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
include/linux/sched.h
kernel/sched.c
kernel/sched_fair.c