Lines Matching refs:rw
270 void arch_read_lock_wait(arch_rwlock_t *rw) in arch_read_lock_wait() argument
273 while (READ_ONCE(rw->cnts) & 0x10000) in arch_read_lock_wait()
279 __atomic_add_const(-1, &rw->cnts); in arch_read_lock_wait()
281 arch_spin_lock(&rw->wait); in arch_read_lock_wait()
283 __atomic_add_const(1, &rw->cnts); in arch_read_lock_wait()
285 while (READ_ONCE(rw->cnts) & 0x10000) in arch_read_lock_wait()
287 arch_spin_unlock(&rw->wait); in arch_read_lock_wait()
291 void arch_write_lock_wait(arch_rwlock_t *rw) in arch_write_lock_wait() argument
296 __atomic_add(0x20000, &rw->cnts); in arch_write_lock_wait()
299 arch_spin_lock(&rw->wait); in arch_write_lock_wait()
302 old = READ_ONCE(rw->cnts); in arch_write_lock_wait()
304 __atomic_cmpxchg_bool(&rw->cnts, old, old | 0x10000)) in arch_write_lock_wait()
310 arch_spin_unlock(&rw->wait); in arch_write_lock_wait()