Lines Matching full:hb
29 * the hb spinlock can be avoided and simply return. In order for this
147 * the hb->lock. in futex_wake_mark()
157 struct futex_hash_bucket *hb; in futex_wake() local
173 hb = futex_hash(&key); in futex_wake()
176 if (!futex_hb_waiters_pending(hb)) in futex_wake()
179 spin_lock(&hb->lock); in futex_wake()
181 plist_for_each_entry_safe(this, next, &hb->chain, list) { in futex_wake()
198 spin_unlock(&hb->lock); in futex_wake()
338 * @hb: the futex hash bucket, must be locked by the caller
342 void futex_wait_queue(struct futex_hash_bucket *hb, struct futex_q *q, in futex_wait_queue() argument
352 futex_queue(q, hb, current); in futex_wait_queue()
415 struct futex_hash_bucket *hb; in futex_wait_multiple_setup() local
454 hb = futex_q_lock(q); in futex_wait_multiple_setup()
460 * next futex. Queue each futex at this moment so hb can in futex_wait_multiple_setup()
463 futex_queue(q, hb, current); in futex_wait_multiple_setup()
467 futex_q_unlock(hb); in futex_wait_multiple_setup()
581 * @hb: storage for hash_bucket pointer to be returned to caller
585 * Return with the hb lock held on success, and unlocked on failure.
588 * - 0 - uaddr contains val and hb has been locked;
589 * - <1 - -EFAULT or -EWOULDBLOCK (uaddr does not contain val) and hb is unlocked
592 struct futex_q *q, struct futex_hash_bucket **hb) in futex_wait_setup() argument
621 *hb = futex_q_lock(q); in futex_wait_setup()
626 futex_q_unlock(*hb); in futex_wait_setup()
639 futex_q_unlock(*hb); in futex_wait_setup()
650 struct futex_hash_bucket *hb; in __futex_wait() local
660 * Prepare to wait on uaddr. On success, it holds hb->lock and q in __futex_wait()
663 ret = futex_wait_setup(uaddr, val, flags, &q, &hb); in __futex_wait()
668 futex_wait_queue(hb, &q, to); in __futex_wait()