Lines Matching refs:rw

137 void _raw_read_lock_wait(arch_rwlock_t *rw)  in _raw_read_lock_wait()  argument
143 __RAW_LOCK(&rw->lock, -1, __RAW_OP_ADD); in _raw_read_lock_wait()
152 old = ACCESS_ONCE(rw->lock); in _raw_read_lock_wait()
153 owner = ACCESS_ONCE(rw->owner); in _raw_read_lock_wait()
156 _raw_compare_and_delay(&rw->lock, old); in _raw_read_lock_wait()
159 if (_raw_compare_and_swap(&rw->lock, old, old + 1)) in _raw_read_lock_wait()
165 int _raw_read_trylock_retry(arch_rwlock_t *rw) in _raw_read_trylock_retry() argument
171 old = ACCESS_ONCE(rw->lock); in _raw_read_trylock_retry()
174 _raw_compare_and_delay(&rw->lock, old); in _raw_read_trylock_retry()
177 if (_raw_compare_and_swap(&rw->lock, old, old + 1)) in _raw_read_trylock_retry()
186 void _raw_write_lock_wait(arch_rwlock_t *rw, unsigned int prev) in _raw_write_lock_wait() argument
198 old = ACCESS_ONCE(rw->lock); in _raw_write_lock_wait()
199 owner = ACCESS_ONCE(rw->owner); in _raw_write_lock_wait()
202 prev = __RAW_LOCK(&rw->lock, 0x80000000, __RAW_OP_OR); in _raw_write_lock_wait()
208 _raw_compare_and_delay(&rw->lock, old); in _raw_write_lock_wait()
215 void _raw_write_lock_wait(arch_rwlock_t *rw) in _raw_write_lock_wait() argument
228 old = ACCESS_ONCE(rw->lock); in _raw_write_lock_wait()
229 owner = ACCESS_ONCE(rw->owner); in _raw_write_lock_wait()
231 _raw_compare_and_swap(&rw->lock, old, old | 0x80000000)) in _raw_write_lock_wait()
238 _raw_compare_and_delay(&rw->lock, old); in _raw_write_lock_wait()
245 int _raw_write_trylock_retry(arch_rwlock_t *rw) in _raw_write_trylock_retry() argument
251 old = ACCESS_ONCE(rw->lock); in _raw_write_trylock_retry()
254 _raw_compare_and_delay(&rw->lock, old); in _raw_write_trylock_retry()
257 if (_raw_compare_and_swap(&rw->lock, 0, 0x80000000)) in _raw_write_trylock_retry()