Lines Matching refs:rw
69 static __inline__ void arch_read_lock(arch_rwlock_t *rw) in arch_read_lock() argument
73 arch_spin_lock_flags(&rw->lock, flags); in arch_read_lock()
74 rw->counter++; in arch_read_lock()
75 arch_spin_unlock(&rw->lock); in arch_read_lock()
81 static __inline__ void arch_read_unlock(arch_rwlock_t *rw) in arch_read_unlock() argument
85 arch_spin_lock_flags(&rw->lock, flags); in arch_read_unlock()
86 rw->counter--; in arch_read_unlock()
87 arch_spin_unlock(&rw->lock); in arch_read_unlock()
93 static __inline__ int arch_read_trylock(arch_rwlock_t *rw) in arch_read_trylock() argument
98 if (arch_spin_trylock(&rw->lock)) { in arch_read_trylock()
99 rw->counter++; in arch_read_trylock()
100 arch_spin_unlock(&rw->lock); in arch_read_trylock()
107 if (rw->counter < 0) in arch_read_trylock()
111 while (arch_spin_is_locked(&rw->lock) && rw->counter >= 0) in arch_read_trylock()
119 static __inline__ void arch_write_lock(arch_rwlock_t *rw) in arch_write_lock() argument
124 arch_spin_lock_flags(&rw->lock, flags); in arch_write_lock()
126 if (rw->counter != 0) { in arch_write_lock()
127 arch_spin_unlock(&rw->lock); in arch_write_lock()
130 while (rw->counter != 0) in arch_write_lock()
136 rw->counter = -1; /* mark as write-locked */ in arch_write_lock()
141 static __inline__ void arch_write_unlock(arch_rwlock_t *rw) in arch_write_unlock() argument
143 rw->counter = 0; in arch_write_unlock()
144 arch_spin_unlock(&rw->lock); in arch_write_unlock()
149 static __inline__ int arch_write_trylock(arch_rwlock_t *rw) in arch_write_trylock() argument
155 if (arch_spin_trylock(&rw->lock)) { in arch_write_trylock()
156 if (rw->counter == 0) { in arch_write_trylock()
157 rw->counter = -1; in arch_write_trylock()
161 arch_spin_unlock(&rw->lock); in arch_write_trylock()