futex: Clarify comment for requeue_pi_wake_futex()
It's slightly confusing. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org> Link: https://lore.kernel.org/r/20210902094414.618613025@linutronix.de
This commit is contained in:
parent
4f07ec0d76
commit
249955e51c
|
@ -1954,12 +1954,26 @@ static inline int futex_requeue_pi_wakeup_sync(struct futex_q *q)
|
||||||
* @hb: the hash_bucket of the requeue target futex
|
* @hb: the hash_bucket of the requeue target futex
|
||||||
*
|
*
|
||||||
* During futex_requeue, with requeue_pi=1, it is possible to acquire the
|
* 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
|
* target futex if it is uncontended or via a lock steal.
|
||||||
* 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
|
* 1) Set @q::key to the requeue target futex key so the waiter can detect
|
||||||
* atomic lock acquisition. Set the q->lock_ptr to the requeue target hb->lock
|
* the wakeup on the right futex.
|
||||||
* to protect access to the pi_state to fixup the owner later. Must be called
|
*
|
||||||
* with both q->lock_ptr and hb->lock held.
|
* 2) Dequeue @q from the hash bucket.
|
||||||
|
*
|
||||||
|
* 3) Set @q::rt_waiter to NULL so the woken up task can detect atomic lock
|
||||||
|
* acquisition.
|
||||||
|
*
|
||||||
|
* 4) Set the q->lock_ptr to the requeue target hb->lock for the case that
|
||||||
|
* the waiter has to fixup the pi state.
|
||||||
|
*
|
||||||
|
* 5) Complete the requeue state so the waiter can make progress. After
|
||||||
|
* this point the waiter task can return from the syscall immediately in
|
||||||
|
* case that the pi state does not have to be fixed up.
|
||||||
|
*
|
||||||
|
* 6) Wake the waiter task.
|
||||||
|
*
|
||||||
|
* Must be called with both q->lock_ptr and hb->lock held.
|
||||||
*/
|
*/
|
||||||
static inline
|
static inline
|
||||||
void requeue_pi_wake_futex(struct futex_q *q, union futex_key *key,
|
void requeue_pi_wake_futex(struct futex_q *q, union futex_key *key,
|
||||||
|
|
Loading…
Reference in New Issue