kernel-hacking-2024-linux-s.../kernel/futex
Jens Axboe 12a4be50af futex: factor out the futex wake handling
In preparation for having another waker that isn't futex_wake_mark(),
add a wake handler in futex_q. No extra data is associated with the
handler outside of struct futex_q itself. futex_wake_mark() is defined as
the standard wakeup helper, now set through futex_q_init like other
defaults.

Normal sync futex waiting relies on wake_q holding tasks that should
be woken up. This is what futex_wake_mark() does, it'll unqueue the
futex and add the associated task to the wake queue. For async usage of
futex waiting, rather than having tasks sleeping on the futex, we'll
need to deal with a futex wake differently. For the planned io_uring
case, that means posting a completion event for the task in question.
Having a definable wake handler can help support that use case.

Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2023-09-29 02:36:50 -06:00
..
core.c futex: Propagate flags into get_futex_key() 2023-09-21 19:22:09 +02:00
futex.h futex: factor out the futex wake handling 2023-09-29 02:36:50 -06:00
Makefile futex: Split out wait/wake 2021-10-07 13:51:11 +02:00
pi.c futex: Propagate flags into get_futex_key() 2023-09-21 19:22:09 +02:00
requeue.c futex: factor out the futex wake handling 2023-09-29 02:36:50 -06:00
syscalls.c futex: move FUTEX2_VALID_MASK to futex.h 2023-09-29 02:36:16 -06:00
waitwake.c futex: factor out the futex wake handling 2023-09-29 02:36:50 -06:00