Lines Matching refs:rw

102 static inline int arch_read_can_lock(arch_rwlock_t *rw)  in arch_read_can_lock()  argument
104 return !arch_write_val_locked(rw->lock); in arch_read_can_lock()
111 static inline int arch_write_can_lock(arch_rwlock_t *rw) in arch_write_can_lock() argument
113 return rw->lock == 0; in arch_write_can_lock()
116 extern void __read_lock_failed(arch_rwlock_t *rw);
118 static inline void arch_read_lock(arch_rwlock_t *rw) in arch_read_lock() argument
120 u32 val = __insn_fetchaddgez4(&rw->lock, 1); in arch_read_lock()
122 __read_lock_failed(rw); in arch_read_lock()
125 extern void __write_lock_failed(arch_rwlock_t *rw, u32 val);
127 static inline void arch_write_lock(arch_rwlock_t *rw) in arch_write_lock() argument
129 u32 val = __insn_fetchor4(&rw->lock, __WRITE_LOCK_BIT); in arch_write_lock()
131 __write_lock_failed(rw, val); in arch_write_lock()
134 static inline void arch_read_unlock(arch_rwlock_t *rw) in arch_read_unlock() argument
137 __insn_fetchadd4(&rw->lock, -1); in arch_read_unlock()
140 static inline void arch_write_unlock(arch_rwlock_t *rw) in arch_write_unlock() argument
143 __insn_exch4(&rw->lock, 0); /* Avoid waiting in the write buffer. */ in arch_write_unlock()
146 static inline int arch_read_trylock(arch_rwlock_t *rw) in arch_read_trylock() argument
148 return !arch_write_val_locked(__insn_fetchaddgez4(&rw->lock, 1)); in arch_read_trylock()
151 static inline int arch_write_trylock(arch_rwlock_t *rw) in arch_write_trylock() argument
153 u32 val = __insn_fetchor4(&rw->lock, __WRITE_LOCK_BIT); in arch_write_trylock()
157 __insn_fetchand4(&rw->lock, ~__WRITE_LOCK_BIT); in arch_write_trylock()