Lines Matching refs:cnts
39 extern void queued_read_lock_slowpath(struct qrwlock *lock, u32 cnts);
48 return !(atomic_read(&lock->cnts) & _QW_WMASK); in queued_read_can_lock()
57 return !atomic_read(&lock->cnts); in queued_write_can_lock()
67 u32 cnts; in queued_read_trylock() local
69 cnts = atomic_read(&lock->cnts); in queued_read_trylock()
70 if (likely(!(cnts & _QW_WMASK))) { in queued_read_trylock()
71 cnts = (u32)atomic_add_return_acquire(_QR_BIAS, &lock->cnts); in queued_read_trylock()
72 if (likely(!(cnts & _QW_WMASK))) in queued_read_trylock()
74 atomic_sub(_QR_BIAS, &lock->cnts); in queued_read_trylock()
86 u32 cnts; in queued_write_trylock() local
88 cnts = atomic_read(&lock->cnts); in queued_write_trylock()
89 if (unlikely(cnts)) in queued_write_trylock()
92 return likely(atomic_cmpxchg_acquire(&lock->cnts, in queued_write_trylock()
93 cnts, cnts | _QW_LOCKED) == cnts); in queued_write_trylock()
101 u32 cnts; in queued_read_lock() local
103 cnts = atomic_add_return_acquire(_QR_BIAS, &lock->cnts); in queued_read_lock()
104 if (likely(!(cnts & _QW_WMASK))) in queued_read_lock()
108 queued_read_lock_slowpath(lock, cnts); in queued_read_lock()
118 if (atomic_cmpxchg_acquire(&lock->cnts, 0, _QW_LOCKED) == 0) in queued_write_lock()
133 (void)atomic_sub_return_release(_QR_BIAS, &lock->cnts); in queued_read_unlock()
142 smp_store_release((u8 *)&lock->cnts, 0); in queued_write_unlock()