REQUEUE_PI_WAKE_FUTE(9) | Futex API reference | REQUEUE_PI_WAKE_FUTE(9) |
NAME¶
requeue_pi_wake_futex - Wake a task that acquired the lock during requeue
SYNOPSIS¶
void requeue_pi_wake_futex(struct futex_q * q, union futex_key * key, struct futex_hash_bucket * hb);
ARGUMENTS¶
struct futex_q * q
union futex_key * key
struct futex_hash_bucket * hb
DESCRIPTION¶
During futex_requeue, with requeue_pi=1, it is possible to acquire the target futex if it is uncontended or via a lock steal. Set the futex_q key to the requeue target futex so the waiter can detect the wakeup on the right futex, but remove it from the hb and NULL the rt_waiter so it can detect atomic lock acquisition. Set the q->lock_ptr to the requeue target hb->lock to protect access to the pi_state to fixup the owner later. Must be called with both q->lock_ptr and hb->lock held.
AUTHOR¶
Rusty Russell <rusty@rustcorp.com.au>
COPYRIGHT¶
June 2017 | Kernel Hackers Manual 4.11 |