Lines Matching refs:rw
178 static inline long __arch_read_trylock(arch_rwlock_t *rw) in __arch_read_trylock() argument
192 : "r" (&rw->lock), [eh] "n" (eh) in __arch_read_trylock()
202 static inline long __arch_write_trylock(arch_rwlock_t *rw) in __arch_write_trylock() argument
216 : "r" (token), "r" (&rw->lock), [eh] "n" (eh) in __arch_write_trylock()
222 static inline void arch_read_lock(arch_rwlock_t *rw) in arch_read_lock() argument
225 if (likely(__arch_read_trylock(rw) > 0)) in arch_read_lock()
230 splpar_rw_yield(rw); in arch_read_lock()
231 } while (unlikely(rw->lock < 0)); in arch_read_lock()
236 static inline void arch_write_lock(arch_rwlock_t *rw) in arch_write_lock() argument
239 if (likely(__arch_write_trylock(rw) == 0)) in arch_write_lock()
244 splpar_rw_yield(rw); in arch_write_lock()
245 } while (unlikely(rw->lock != 0)); in arch_write_lock()
250 static inline int arch_read_trylock(arch_rwlock_t *rw) in arch_read_trylock() argument
252 return __arch_read_trylock(rw) > 0; in arch_read_trylock()
255 static inline int arch_write_trylock(arch_rwlock_t *rw) in arch_write_trylock() argument
257 return __arch_write_trylock(rw) == 0; in arch_write_trylock()
260 static inline void arch_read_unlock(arch_rwlock_t *rw) in arch_read_unlock() argument
272 : "r"(&rw->lock) in arch_read_unlock()
276 static inline void arch_write_unlock(arch_rwlock_t *rw) in arch_write_unlock() argument
280 rw->lock = 0; in arch_write_unlock()