Lines Matching full:hb
69 * requeue_futex() - Requeue a futex_q from one hb to another
205 * @hb: the hash_bucket of the requeue target futex
218 * 4) Set the q->lock_ptr to the requeue target hb->lock for the case that
227 * Must be called with both q->lock_ptr and hb->lock held.
231 struct futex_hash_bucket *hb) in requeue_pi_wake_futex() argument
244 futex_hash_get(hb); in requeue_pi_wake_futex()
246 q->lock_ptr = &hb->lock; in requeue_pi_wake_futex()
459 CLASS(hb, hb1)(&key1); in futex_requeue()
460 CLASS(hb, hb2)(&key2); in futex_requeue()
698 * @hb: the hash_bucket futex_q was original enqueued on
708 int handle_early_requeue_pi_wakeup(struct futex_hash_bucket *hb, in handle_early_requeue_pi_wakeup() argument
715 * With the hb lock held, we avoid races while we process the wakeup. in handle_early_requeue_pi_wakeup()
716 * We only need to hold hb (and not hb2) to ensure atomicity as the in handle_early_requeue_pi_wakeup()
717 * wakeup code can't change q.key from uaddr to uaddr2 if we hold hb. in handle_early_requeue_pi_wakeup()
721 WARN_ON_ONCE(&hb->lock != q->lock_ptr); in handle_early_requeue_pi_wakeup()
727 plist_del(&q->list, &hb->chain); in handle_early_requeue_pi_wakeup()
728 futex_hb_waiters_dec(hb); in handle_early_requeue_pi_wakeup()
817 * Prepare to wait on uaddr. On success, it holds hb->lock and q in futex_wait_requeue_pi()
824 /* Queue the futex_q, drop the hb lock, wait for wakeup. */ in futex_wait_requeue_pi()
830 CLASS(hb, hb)(&q.key); in futex_wait_requeue_pi()
832 spin_lock(&hb->lock); in futex_wait_requeue_pi()
833 ret = handle_early_requeue_pi_wakeup(hb, &q, to); in futex_wait_requeue_pi()
834 spin_unlock(&hb->lock); in futex_wait_requeue_pi()
901 CLASS(hb, hb)(&q.key); in futex_wait_requeue_pi()
903 futex_hash_put(hb); in futex_wait_requeue_pi()