mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 03:36:19 +00:00
futex: Correct queue_me and unqueue_me commentary
The queue_me/unqueue_me commentary is oddly placed and out of date. Clean it up and correct the inaccurate bits. Signed-off-by: Darren Hart <dvhltc@us.ibm.com> Acked-by: Peter Zijlstra <peterz@infradead.org> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Eric Dumazet <eric.dumazet@gmail.com> Cc: Dinakar Guniguntala <dino@in.ibm.com> Cc: John Stultz <johnstul@us.ibm.com> LKML-Reference: <20090922053015.8717.71713.stgit@Aeon> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
56ec1607b1
commit
d40d65c8db
1 changed files with 29 additions and 12 deletions
|
@ -1350,6 +1350,25 @@ static inline struct futex_hash_bucket *queue_lock(struct futex_q *q)
|
|||
return hb;
|
||||
}
|
||||
|
||||
static inline void
|
||||
queue_unlock(struct futex_q *q, struct futex_hash_bucket *hb)
|
||||
{
|
||||
spin_unlock(&hb->lock);
|
||||
drop_futex_key_refs(&q->key);
|
||||
}
|
||||
|
||||
/**
|
||||
* queue_me() - Enqueue the futex_q on the futex_hash_bucket
|
||||
* @q: The futex_q to enqueue
|
||||
* @hb: The destination hash bucket
|
||||
*
|
||||
* The hb->lock must be held by the caller, and is released here. A call to
|
||||
* queue_me() is typically paired with exactly one call to unqueue_me(). The
|
||||
* exceptions involve the PI related operations, which may use unqueue_me_pi()
|
||||
* or nothing if the unqueue is done as part of the wake process and the unqueue
|
||||
* state is implicit in the state of woken task (see futex_wait_requeue_pi() for
|
||||
* an example).
|
||||
*/
|
||||
static inline void queue_me(struct futex_q *q, struct futex_hash_bucket *hb)
|
||||
{
|
||||
int prio;
|
||||
|
@ -1373,19 +1392,17 @@ static inline void queue_me(struct futex_q *q, struct futex_hash_bucket *hb)
|
|||
spin_unlock(&hb->lock);
|
||||
}
|
||||
|
||||
static inline void
|
||||
queue_unlock(struct futex_q *q, struct futex_hash_bucket *hb)
|
||||
{
|
||||
spin_unlock(&hb->lock);
|
||||
drop_futex_key_refs(&q->key);
|
||||
}
|
||||
|
||||
/*
|
||||
* queue_me and unqueue_me must be called as a pair, each
|
||||
* exactly once. They are called with the hashed spinlock held.
|
||||
/**
|
||||
* unqueue_me() - Remove the futex_q from its futex_hash_bucket
|
||||
* @q: The futex_q to unqueue
|
||||
*
|
||||
* The q->lock_ptr must not be held by the caller. A call to unqueue_me() must
|
||||
* be paired with exactly one earlier call to queue_me().
|
||||
*
|
||||
* Returns:
|
||||
* 1 - if the futex_q was still queued (and we removed unqueued it)
|
||||
* 0 - if the futex_q was already removed by the waking thread
|
||||
*/
|
||||
|
||||
/* Return 1 if we were still queued (ie. 0 means we were woken) */
|
||||
static int unqueue_me(struct futex_q *q)
|
||||
{
|
||||
spinlock_t *lock_ptr;
|
||||
|
|
Loading…
Reference in a new issue