sched/wait: Provide infrastructure to deal with nested blocking
authorPeter Zijlstra <peterz@infradead.org>
Wed, 24 Sep 2014 08:18:47 +0000 (10:18 +0200)
committerIngo Molnar <mingo@kernel.org>
Tue, 28 Oct 2014 09:55:15 +0000 (10:55 +0100)
commit61ada528dea028331e99e8ceaed87c683ad25de2
tree0037fc75e3629576238dce932babf7738e80cb86
parent6f942a1f264e875c5f3ad6f505d7b500a3e7fa82
sched/wait: Provide infrastructure to deal with nested blocking

There are a few places that call blocking primitives from wait loops,
provide infrastructure to support this without the typical
task_struct::state collision.

We record the wakeup in wait_queue_t::flags which leaves
task_struct::state free to be used by others.

Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Oleg Nesterov <oleg@redhat.com>
Cc: tglx@linutronix.de
Cc: ilya.dryomov@inktank.com
Cc: umgwanakikbuti@gmail.com
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Link: http://lkml.kernel.org/r/20140924082242.051202318@infradead.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
include/linux/wait.h
kernel/sched/wait.c