Lines Matching refs:cnts
34 rspin_until_writer_unlock(struct qrwlock *lock, u32 cnts) in rspin_until_writer_unlock() argument
36 while ((cnts & _QW_WMASK) == _QW_LOCKED) { in rspin_until_writer_unlock()
38 cnts = smp_load_acquire((u32 *)&lock->cnts); in rspin_until_writer_unlock()
48 u32 cnts; in queue_read_lock_slowpath() local
58 cnts = smp_load_acquire((u32 *)&lock->cnts); in queue_read_lock_slowpath()
59 rspin_until_writer_unlock(lock, cnts); in queue_read_lock_slowpath()
62 atomic_sub(_QR_BIAS, &lock->cnts); in queue_read_lock_slowpath()
76 while (atomic_read(&lock->cnts) & _QW_WMASK) in queue_read_lock_slowpath()
79 cnts = atomic_add_return(_QR_BIAS, &lock->cnts) - _QR_BIAS; in queue_read_lock_slowpath()
80 rspin_until_writer_unlock(lock, cnts); in queue_read_lock_slowpath()
95 u32 cnts; in queue_write_lock_slowpath() local
101 if (!atomic_read(&lock->cnts) && in queue_write_lock_slowpath()
102 (atomic_cmpxchg(&lock->cnts, 0, _QW_LOCKED) == 0)) in queue_write_lock_slowpath()
110 cnts = atomic_read(&lock->cnts); in queue_write_lock_slowpath()
111 if (!(cnts & _QW_WMASK) && in queue_write_lock_slowpath()
112 (atomic_cmpxchg(&lock->cnts, cnts, in queue_write_lock_slowpath()
113 cnts | _QW_WAITING) == cnts)) in queue_write_lock_slowpath()
121 cnts = atomic_read(&lock->cnts); in queue_write_lock_slowpath()
122 if ((cnts == _QW_WAITING) && in queue_write_lock_slowpath()
123 (atomic_cmpxchg(&lock->cnts, _QW_WAITING, in queue_write_lock_slowpath()