Lines Matching refs:rw
55 static inline void arch_read_lock(arch_rwlock_t *rw) in arch_read_lock() argument
58 do old = rw->lock; in arch_read_lock()
59 while (!old || __sl_cas(&rw->lock, old, old-1) != old); in arch_read_lock()
62 static inline void arch_read_unlock(arch_rwlock_t *rw) in arch_read_unlock() argument
65 do old = rw->lock; in arch_read_unlock()
66 while (__sl_cas(&rw->lock, old, old+1) != old); in arch_read_unlock()
69 static inline void arch_write_lock(arch_rwlock_t *rw) in arch_write_lock() argument
71 while (__sl_cas(&rw->lock, RW_LOCK_BIAS, 0) != RW_LOCK_BIAS); in arch_write_lock()
74 static inline void arch_write_unlock(arch_rwlock_t *rw) in arch_write_unlock() argument
76 __sl_cas(&rw->lock, 0, RW_LOCK_BIAS); in arch_write_unlock()
79 static inline int arch_read_trylock(arch_rwlock_t *rw) in arch_read_trylock() argument
82 do old = rw->lock; in arch_read_trylock()
83 while (old && __sl_cas(&rw->lock, old, old-1) != old); in arch_read_trylock()
87 static inline int arch_write_trylock(arch_rwlock_t *rw) in arch_write_trylock() argument
89 return __sl_cas(&rw->lock, RW_LOCK_BIAS, 0) == RW_LOCK_BIAS; in arch_write_trylock()