Lines Matching refs:lock
60 struct qspinlock *lock; member
99 static struct qspinlock **pv_hash(struct qspinlock *lock, struct pv_node *node) in pv_hash() argument
101 unsigned long offset, hash = hash_ptr(lock, pv_lock_hash_bits); in pv_hash()
105 if (!cmpxchg(&he->lock, NULL, lock)) { in pv_hash()
107 return &he->lock; in pv_hash()
123 static struct pv_node *pv_unhash(struct qspinlock *lock) in pv_unhash() argument
125 unsigned long offset, hash = hash_ptr(lock, pv_lock_hash_bits); in pv_unhash()
130 if (READ_ONCE(he->lock) == lock) { in pv_unhash()
132 WRITE_ONCE(he->lock, NULL); in pv_unhash()
218 static void pv_kick_node(struct qspinlock *lock, struct mcs_spinlock *node) in pv_kick_node() argument
221 struct __qspinlock *l = (void *)lock; in pv_kick_node()
241 (void)pv_hash(lock, pn); in pv_kick_node()
248 static void pv_wait_head(struct qspinlock *lock, struct mcs_spinlock *node) in pv_wait_head() argument
251 struct __qspinlock *l = (void *)lock; in pv_wait_head()
270 lp = pv_hash(lock, pn); in pv_wait_head()
314 __visible void __pv_queued_spin_unlock(struct qspinlock *lock) in __pv_queued_spin_unlock() argument
316 struct __qspinlock *l = (void *)lock; in __pv_queued_spin_unlock()
332 (unsigned long)lock, atomic_read(&lock->val)); in __pv_queued_spin_unlock()
349 node = pv_unhash(lock); in __pv_queued_spin_unlock()