Lines Matching full:rw
79 static inline void arch_read_lock(arch_rwlock_t *rw) in arch_read_lock() argument
87 * if (rw->counter > 0) { in arch_read_lock()
88 * rw->counter--; in arch_read_lock()
101 : [rwlock] "r" (&(rw->counter)), in arch_read_lock()
109 static inline int arch_read_trylock(arch_rwlock_t *rw) in arch_read_trylock() argument
125 : [rwlock] "r" (&(rw->counter)), in arch_read_trylock()
134 static inline void arch_write_lock(arch_rwlock_t *rw) in arch_write_lock() argument
144 * if (rw->counter == __ARCH_RW_LOCK_UNLOCKED__) { in arch_write_lock()
145 * rw->counter = 0; in arch_write_lock()
158 : [rwlock] "r" (&(rw->counter)), in arch_write_lock()
167 static inline int arch_write_trylock(arch_rwlock_t *rw) in arch_write_trylock() argument
183 : [rwlock] "r" (&(rw->counter)), in arch_write_trylock()
193 static inline void arch_read_unlock(arch_rwlock_t *rw) in arch_read_unlock() argument
200 * rw->counter++; in arch_read_unlock()
209 : [rwlock] "r" (&(rw->counter)) in arch_read_unlock()
213 static inline void arch_write_unlock(arch_rwlock_t *rw) in arch_write_unlock() argument
217 WRITE_ONCE(rw->counter, __ARCH_RW_LOCK_UNLOCKED__); in arch_write_unlock()
298 static inline int arch_read_trylock(arch_rwlock_t *rw) in arch_read_trylock() argument
304 arch_spin_lock(&(rw->lock_mutex)); in arch_read_trylock()
310 if (rw->counter > 0) { in arch_read_trylock()
311 rw->counter--; in arch_read_trylock()
315 arch_spin_unlock(&(rw->lock_mutex)); in arch_read_trylock()
322 static inline int arch_write_trylock(arch_rwlock_t *rw) in arch_write_trylock() argument
328 arch_spin_lock(&(rw->lock_mutex)); in arch_write_trylock()
336 if (rw->counter == __ARCH_RW_LOCK_UNLOCKED__) { in arch_write_trylock()
337 rw->counter = 0; in arch_write_trylock()
340 arch_spin_unlock(&(rw->lock_mutex)); in arch_write_trylock()
346 static inline void arch_read_lock(arch_rwlock_t *rw) in arch_read_lock() argument
348 while (!arch_read_trylock(rw)) in arch_read_lock()
352 static inline void arch_write_lock(arch_rwlock_t *rw) in arch_write_lock() argument
354 while (!arch_write_trylock(rw)) in arch_write_lock()
358 static inline void arch_read_unlock(arch_rwlock_t *rw) in arch_read_unlock() argument
363 arch_spin_lock(&(rw->lock_mutex)); in arch_read_unlock()
364 rw->counter++; in arch_read_unlock()
365 arch_spin_unlock(&(rw->lock_mutex)); in arch_read_unlock()
369 static inline void arch_write_unlock(arch_rwlock_t *rw) in arch_write_unlock() argument
374 arch_spin_lock(&(rw->lock_mutex)); in arch_write_unlock()
375 rw->counter = __ARCH_RW_LOCK_UNLOCKED__; in arch_write_unlock()
376 arch_spin_unlock(&(rw->lock_mutex)); in arch_write_unlock()