Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

sched: Update yield() docs

Suggested-by: Joe Perches <joe@perches.com>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1331056466.11248.327.camel@twins
Signed-off-by: Ingo Molnar <mingo@elte.hu>

authored by

Peter Zijlstra and committed by
Ingo Molnar
8e3fabfd 3ccf3e83

+18 -2
+18 -2
kernel/sched/core.c
··· 4577 4577 /** 4578 4578 * yield - yield the current processor to other threads. 4579 4579 * 4580 - * This is a shortcut for kernel-space yielding - it marks the 4581 - * thread runnable and calls sys_sched_yield(). 4580 + * Do not ever use this function, there's a 99% chance you're doing it wrong. 4581 + * 4582 + * The scheduler is at all times free to pick the calling task as the most 4583 + * eligible task to run, if removing the yield() call from your code breaks 4584 + * it, its already broken. 4585 + * 4586 + * Typical broken usage is: 4587 + * 4588 + * while (!event) 4589 + * yield(); 4590 + * 4591 + * where one assumes that yield() will let 'the other' process run that will 4592 + * make event true. If the current task is a SCHED_FIFO task that will never 4593 + * happen. Never use yield() as a progress guarantee!! 4594 + * 4595 + * If you want to use yield() to wait for something, use wait_event(). 4596 + * If you want to use yield() to be 'nice' for others, use cond_resched(). 4597 + * If you still want to use yield(), do not! 4582 4598 */ 4583 4599 void __sched yield(void) 4584 4600 {