Lines Matching refs:rwlock

104 int arch_read_trylock(arch_rwlock_t *rwlock)  in arch_read_trylock()  argument
108 val = __insn_tns((int *)&rwlock->lock); in arch_read_trylock()
111 rwlock->lock = val; in arch_read_trylock()
117 rwlock->lock = val; in arch_read_trylock()
131 void arch_read_lock(arch_rwlock_t *rwlock) in arch_read_lock() argument
134 while (unlikely(!arch_read_trylock(rwlock))) in arch_read_lock()
139 void arch_read_unlock(arch_rwlock_t *rwlock) in arch_read_unlock() argument
146 val = __insn_tns((int *)&rwlock->lock); in arch_read_unlock()
148 rwlock->lock = val - (1 << _RD_COUNT_SHIFT); in arch_read_unlock()
163 void arch_write_lock(arch_rwlock_t *rwlock) in arch_write_lock() argument
172 u32 val = __insn_tns((int *)&rwlock->lock); in arch_write_lock()
175 rwlock->lock = 1 << _WR_NEXT_SHIFT; in arch_write_lock()
187 rwlock->lock = val; in arch_write_lock()
190 val = __insn_tns((int *)&rwlock->lock); in arch_write_lock()
194 rwlock->lock = __insn_addb(val, 1 << WR_NEXT_SHIFT); in arch_write_lock()
212 while ((val = rwlock->lock) & 1) in arch_write_lock()
218 int arch_write_trylock(arch_rwlock_t *rwlock) in arch_write_trylock() argument
220 u32 val = __insn_tns((int *)&rwlock->lock); in arch_write_trylock()
228 rwlock->lock = val; in arch_write_trylock()
233 rwlock->lock = 1 << _WR_NEXT_SHIFT; in arch_write_trylock()
238 void arch_write_unlock(arch_rwlock_t *rwlock) in arch_write_unlock() argument
243 val = __insn_tns((int *)&rwlock->lock); in arch_write_unlock()
245 rwlock->lock = 0; in arch_write_unlock()
251 val = __insn_tns((int *)&rwlock->lock); in arch_write_unlock()
257 rwlock->lock = val; in arch_write_unlock()