Lines Matching refs:cnts
48 return !(atomic_read(&lock->cnts) & _QW_WMASK); in queue_read_can_lock()
57 return !atomic_read(&lock->cnts); in queue_write_can_lock()
67 u32 cnts; in queue_read_trylock() local
69 cnts = atomic_read(&lock->cnts); in queue_read_trylock()
70 if (likely(!(cnts & _QW_WMASK))) { in queue_read_trylock()
71 cnts = (u32)atomic_add_return(_QR_BIAS, &lock->cnts); in queue_read_trylock()
72 if (likely(!(cnts & _QW_WMASK))) in queue_read_trylock()
74 atomic_sub(_QR_BIAS, &lock->cnts); in queue_read_trylock()
86 u32 cnts; in queue_write_trylock() local
88 cnts = atomic_read(&lock->cnts); in queue_write_trylock()
89 if (unlikely(cnts)) in queue_write_trylock()
92 return likely(atomic_cmpxchg(&lock->cnts, in queue_write_trylock()
93 cnts, cnts | _QW_LOCKED) == cnts); in queue_write_trylock()
101 u32 cnts; in queue_read_lock() local
103 cnts = atomic_add_return(_QR_BIAS, &lock->cnts); in queue_read_lock()
104 if (likely(!(cnts & _QW_WMASK))) in queue_read_lock()
118 if (atomic_cmpxchg(&lock->cnts, 0, _QW_LOCKED) == 0) in queue_write_lock()
134 atomic_sub(_QR_BIAS, &lock->cnts); in queue_read_unlock()
149 atomic_sub(_QW_LOCKED, &lock->cnts); in queue_write_unlock()