Lines Matching refs:rwlock

113 int arch_read_trylock(arch_rwlock_t *rwlock)  in arch_read_trylock()  argument
117 val = __insn_tns((int *)&rwlock->lock); in arch_read_trylock()
120 rwlock->lock = val; in arch_read_trylock()
126 rwlock->lock = val; in arch_read_trylock()
140 void arch_read_lock(arch_rwlock_t *rwlock) in arch_read_lock() argument
143 while (unlikely(!arch_read_trylock(rwlock))) in arch_read_lock()
148 void arch_read_unlock(arch_rwlock_t *rwlock) in arch_read_unlock() argument
155 val = __insn_tns((int *)&rwlock->lock); in arch_read_unlock()
157 rwlock->lock = val - (1 << _RD_COUNT_SHIFT); in arch_read_unlock()
172 void arch_write_lock(arch_rwlock_t *rwlock) in arch_write_lock() argument
181 u32 val = __insn_tns((int *)&rwlock->lock); in arch_write_lock()
184 rwlock->lock = 1 << _WR_NEXT_SHIFT; in arch_write_lock()
196 rwlock->lock = val; in arch_write_lock()
199 val = __insn_tns((int *)&rwlock->lock); in arch_write_lock()
203 rwlock->lock = __insn_addb(val, 1 << WR_NEXT_SHIFT); in arch_write_lock()
221 while ((val = rwlock->lock) & 1) in arch_write_lock()
227 int arch_write_trylock(arch_rwlock_t *rwlock) in arch_write_trylock() argument
229 u32 val = __insn_tns((int *)&rwlock->lock); in arch_write_trylock()
237 rwlock->lock = val; in arch_write_trylock()
242 rwlock->lock = 1 << _WR_NEXT_SHIFT; in arch_write_trylock()
247 void arch_write_unlock(arch_rwlock_t *rwlock) in arch_write_unlock() argument
252 val = __insn_tns((int *)&rwlock->lock); in arch_write_unlock()
254 rwlock->lock = 0; in arch_write_unlock()
260 val = __insn_tns((int *)&rwlock->lock); in arch_write_unlock()
266 rwlock->lock = val; in arch_write_unlock()