Lines Matching full:hb
166 * hb->lock:
168 * hb -> futex_q, relation
171 * (cannot be raw because hb can contain arbitrary amount
192 * hb->lock
218 * We get here with hb->lock held, and having found a in attach_to_pi_state()
220 * has dropped the hb->lock in between futex_queue() and futex_unqueue_pi(), in attach_to_pi_state()
383 * This creates pi_state, we have hb->lock held, this means nothing can in __attach_to_pi_owner()
494 * @hb: the pi futex hash bucket
495 * @key: the futex key associated with uaddr and hb
509 * The hb->lock must be held by the caller.
515 int futex_lock_pi_atomic(u32 __user *uaddr, struct futex_hash_bucket *hb, in futex_lock_pi_atomic() argument
549 top_waiter = futex_top_waiter(hb, key); in futex_lock_pi_atomic()
597 * the kernel and blocked on hb->lock. in futex_lock_pi_atomic()
786 * Note: we hold both hb->lock and pi_mutex->wait_lock. We can safely in __fixup_pi_state_owner()
787 * drop hb->lock since the caller owns the hb -> futex_q relation. in __fixup_pi_state_owner()
865 * acquire the lock. Must be called with the hb lock held.
923 struct futex_hash_bucket *hb; in futex_lock_pi() local
942 hb = futex_q_lock(&q); in futex_lock_pi()
944 ret = futex_lock_pi_atomic(uaddr, hb, &q.key, &q.pi_state, current, in futex_lock_pi()
966 futex_q_unlock(hb); in futex_lock_pi()
985 __futex_queue(&q, hb, current); in futex_lock_pi()
996 * under the hb lock, but that *should* work because it does nothing. in futex_lock_pi()
1003 * On PREEMPT_RT, when hb->lock becomes an rt_mutex, we must not in futex_lock_pi()
1005 * include hb->lock in the blocking chain, even through we'll not in in futex_lock_pi()
1009 * Therefore acquire wait_lock while holding hb->lock, but drop the in futex_lock_pi()
1039 * must unwind the above, however we canont lock hb->lock because in futex_lock_pi()
1040 * rt_mutex already has a waiter enqueued and hb->lock can itself try in futex_lock_pi()
1043 * Doing the cleanup without holding hb->lock can cause inconsistent in futex_lock_pi()
1044 * state between hb and pi_state, but only in the direction of not in futex_lock_pi()
1086 futex_q_unlock(hb); in futex_lock_pi()
1096 futex_q_unlock(hb); in futex_lock_pi()
1117 struct futex_hash_bucket *hb; in futex_unlock_pi() local
1137 hb = futex_hash(&key); in futex_unlock_pi()
1138 spin_lock(&hb->lock); in futex_unlock_pi()
1146 top_waiter = futex_top_waiter(hb, &key); in futex_unlock_pi()
1163 * By taking wait_lock while still holding hb->lock, we ensure in futex_unlock_pi()
1168 * rt_waiter without holding hb->lock, it is possible for in futex_unlock_pi()
1196 spin_unlock(&hb->lock); in futex_unlock_pi()
1230 * on hb->lock. So we can safely ignore them. We do neither in futex_unlock_pi()
1235 spin_unlock(&hb->lock); in futex_unlock_pi()
1255 spin_unlock(&hb->lock); in futex_unlock_pi()