Lines Matching refs:rw
269 void arch_read_lock_wait(arch_rwlock_t *rw) in arch_read_lock_wait() argument
272 while (READ_ONCE(rw->cnts) & 0x10000) in arch_read_lock_wait()
278 __atomic_add_const(-1, &rw->cnts); in arch_read_lock_wait()
280 arch_spin_lock(&rw->wait); in arch_read_lock_wait()
282 __atomic_add_const(1, &rw->cnts); in arch_read_lock_wait()
284 while (READ_ONCE(rw->cnts) & 0x10000) in arch_read_lock_wait()
286 arch_spin_unlock(&rw->wait); in arch_read_lock_wait()
290 void arch_write_lock_wait(arch_rwlock_t *rw) in arch_write_lock_wait() argument
295 __atomic_add(0x20000, &rw->cnts); in arch_write_lock_wait()
298 arch_spin_lock(&rw->wait); in arch_write_lock_wait()
301 old = READ_ONCE(rw->cnts); in arch_write_lock_wait()
303 __atomic_cmpxchg_bool(&rw->cnts, old, old | 0x10000)) in arch_write_lock_wait()
309 arch_spin_unlock(&rw->wait); in arch_write_lock_wait()