Lines Matching refs:lock
22 void arch_spin_lock(arch_spinlock_t *lock) in arch_spin_lock() argument
28 while ((my_ticket = __insn_tns((void *)&lock->next_ticket)) & 1) in arch_spin_lock()
32 lock->next_ticket = my_ticket + TICKET_QUANTUM; in arch_spin_lock()
35 while ((delta = my_ticket - lock->current_ticket) != 0) in arch_spin_lock()
40 int arch_spin_trylock(arch_spinlock_t *lock) in arch_spin_trylock() argument
47 int my_ticket = __insn_tns((void *)&lock->next_ticket); in arch_spin_trylock()
49 if (my_ticket == lock->current_ticket) { in arch_spin_trylock()
51 lock->next_ticket = my_ticket + TICKET_QUANTUM; in arch_spin_trylock()
58 lock->next_ticket = my_ticket; in arch_spin_trylock()
65 void arch_spin_unlock_wait(arch_spinlock_t *lock) in arch_spin_unlock_wait() argument
68 while (arch_spin_is_locked(lock)) in arch_spin_unlock_wait()
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()
146 val = __insn_tns((int *)&rwlock->lock); in arch_read_unlock()
148 rwlock->lock = val - (1 << _RD_COUNT_SHIFT); in arch_read_unlock()
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()
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()
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()