Lines Matching refs:rw
67 static inline int arch_read_trylock(arch_rwlock_t *rw)
73 arch_spin_lock(&(rw->lock_mutex));
79 if (rw->counter > 0) {
80 rw->counter--;
84 arch_spin_unlock(&(rw->lock_mutex));
91 static inline int arch_write_trylock(arch_rwlock_t *rw)
97 arch_spin_lock(&(rw->lock_mutex));
105 if (rw->counter == __ARCH_RW_LOCK_UNLOCKED__) {
106 rw->counter = 0;
109 arch_spin_unlock(&(rw->lock_mutex));
115 static inline void arch_read_lock(arch_rwlock_t *rw)
117 while (!arch_read_trylock(rw))
121 static inline void arch_write_lock(arch_rwlock_t *rw)
123 while (!arch_write_trylock(rw))
127 static inline void arch_read_unlock(arch_rwlock_t *rw)
132 arch_spin_lock(&(rw->lock_mutex));
133 rw->counter++;
134 arch_spin_unlock(&(rw->lock_mutex));
138 static inline void arch_write_unlock(arch_rwlock_t *rw)
143 arch_spin_lock(&(rw->lock_mutex));
144 rw->counter = __ARCH_RW_LOCK_UNLOCKED__;
145 arch_spin_unlock(&(rw->lock_mutex));