Lines Matching refs:rw

99 static inline int arch_read_can_lock(arch_rwlock_t *rw)  in arch_read_can_lock()  argument
101 return !arch_write_val_locked(rw->lock); in arch_read_can_lock()
108 static inline int arch_write_can_lock(arch_rwlock_t *rw) in arch_write_can_lock() argument
110 return rw->lock == 0; in arch_write_can_lock()
113 extern void __read_lock_failed(arch_rwlock_t *rw);
115 static inline void arch_read_lock(arch_rwlock_t *rw) in arch_read_lock() argument
117 u32 val = __insn_fetchaddgez4(&rw->lock, 1); in arch_read_lock()
119 __read_lock_failed(rw); in arch_read_lock()
122 extern void __write_lock_failed(arch_rwlock_t *rw, u32 val);
124 static inline void arch_write_lock(arch_rwlock_t *rw) in arch_write_lock() argument
126 u32 val = __insn_fetchor4(&rw->lock, __WRITE_LOCK_BIT); in arch_write_lock()
128 __write_lock_failed(rw, val); in arch_write_lock()
131 static inline void arch_read_unlock(arch_rwlock_t *rw) in arch_read_unlock() argument
134 __insn_fetchadd4(&rw->lock, -1); in arch_read_unlock()
137 static inline void arch_write_unlock(arch_rwlock_t *rw) in arch_write_unlock() argument
140 __insn_exch4(&rw->lock, 0); /* Avoid waiting in the write buffer. */ in arch_write_unlock()
143 static inline int arch_read_trylock(arch_rwlock_t *rw) in arch_read_trylock() argument
145 return !arch_write_val_locked(__insn_fetchaddgez4(&rw->lock, 1)); in arch_read_trylock()
148 static inline int arch_write_trylock(arch_rwlock_t *rw) in arch_write_trylock() argument
150 u32 val = __insn_fetchor4(&rw->lock, __WRITE_LOCK_BIT); in arch_write_trylock()
154 __insn_fetchand4(&rw->lock, ~__WRITE_LOCK_BIT); in arch_write_trylock()