Files
linux/kernel
Thomas Gleixner f1a11e0576 futex: remove the wait queue
The waitqueue which is used in struct futex_q is a leftover from the
futexfd implementation. There is no need to use a waitqueue at all, as
the waiting task is the only user of it. The waitqueue just adds
additional locking and a loop in the wake up path which both can be
avoided.

We have already a task reference in struct futex_q which is used for
PI futexes. Use it for normal futexes as well and just wake up the
task directly.

The logic of signalling the futex wakeup via setting q->lock_ptr to
NULL is kept with the difference that we set it NULL before doing the
wakeup. This opens an exit race window vs. a non futex wake up of the
to be woken up task, which we prevent with get_task_struct /
put_task_struct on the waiter.

[ Impact: simplification ]

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2009-05-15 15:24:18 +02:00
..
2009-04-02 19:04:55 -07:00
2008-10-16 11:21:30 -07:00
2009-05-15 15:24:18 +02:00
2008-07-28 14:37:38 +02:00
2009-01-14 18:09:02 +01:00
2009-03-13 11:25:53 +01:00
2008-09-02 19:21:40 -07:00
2009-03-30 22:05:16 +10:30
2009-04-06 11:14:02 +02:00
2009-02-26 21:56:07 +01:00
2009-01-06 11:07:15 +01:00
2009-04-03 16:42:35 +01:00
2009-04-03 16:42:35 +01:00
2009-03-24 10:52:46 +11:00