Lines Matching refs:rw

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