Lines Matching refs:rw
185 #define arch_read_can_lock(rw) ((rw)->lock >= 0) argument
186 #define arch_write_can_lock(rw) (!(rw)->lock) argument
200 static inline long __arch_read_trylock(arch_rwlock_t *rw) in __arch_read_trylock() argument
214 : "r" (&rw->lock) in __arch_read_trylock()
224 static inline long __arch_write_trylock(arch_rwlock_t *rw) in __arch_write_trylock() argument
238 : "r" (token), "r" (&rw->lock) in __arch_write_trylock()
244 static inline void arch_read_lock(arch_rwlock_t *rw) in arch_read_lock() argument
247 if (likely(__arch_read_trylock(rw) > 0)) in arch_read_lock()
252 __rw_yield(rw); in arch_read_lock()
253 } while (unlikely(rw->lock < 0)); in arch_read_lock()
258 static inline void arch_write_lock(arch_rwlock_t *rw) in arch_write_lock() argument
261 if (likely(__arch_write_trylock(rw) == 0)) in arch_write_lock()
266 __rw_yield(rw); in arch_write_lock()
267 } while (unlikely(rw->lock != 0)); in arch_write_lock()
272 static inline int arch_read_trylock(arch_rwlock_t *rw) in arch_read_trylock() argument
274 return __arch_read_trylock(rw) > 0; in arch_read_trylock()
277 static inline int arch_write_trylock(arch_rwlock_t *rw) in arch_write_trylock() argument
279 return __arch_write_trylock(rw) == 0; in arch_write_trylock()
282 static inline void arch_read_unlock(arch_rwlock_t *rw) in arch_read_unlock() argument
295 : "r"(&rw->lock) in arch_read_unlock()
299 static inline void arch_write_unlock(arch_rwlock_t *rw) in arch_write_unlock() argument
303 rw->lock = 0; in arch_write_unlock()