mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-04-01 03:44:08 +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;
|
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)
|
static inline void queue_me(struct futex_q *q, struct futex_hash_bucket *hb)
|
||||||
{
|
{
|
||||||
int prio;
|
int prio;
|
||||||
|
@ -1373,19 +1392,17 @@ static inline void queue_me(struct futex_q *q, struct futex_hash_bucket *hb)
|
||||||
spin_unlock(&hb->lock);
|
spin_unlock(&hb->lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void
|
/**
|
||||||
queue_unlock(struct futex_q *q, struct futex_hash_bucket *hb)
|
* unqueue_me() - Remove the futex_q from its futex_hash_bucket
|
||||||
{
|
* @q: The futex_q to unqueue
|
||||||
spin_unlock(&hb->lock);
|
*
|
||||||
drop_futex_key_refs(&q->key);
|
* 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:
|
||||||
* queue_me and unqueue_me must be called as a pair, each
|
* 1 - if the futex_q was still queued (and we removed unqueued it)
|
||||||
* exactly once. They are called with the hashed spinlock held.
|
* 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)
|
static int unqueue_me(struct futex_q *q)
|
||||||
{
|
{
|
||||||
spinlock_t *lock_ptr;
|
spinlock_t *lock_ptr;
|
||||||
|
|
Loading…
Add table
Reference in a new issue