Lines Matching refs:lock

19 _raw_compare_and_swap(unsigned int *lock, unsigned int old, unsigned int new)  in _raw_compare_and_swap()  argument
21 return __sync_bool_compare_and_swap(lock, old, new); in _raw_compare_and_swap()
39 static inline void arch_spin_relax(arch_spinlock_t *lock) in arch_spin_relax() argument
41 arch_lock_relax(lock->lock); in arch_spin_relax()
49 static inline int arch_spin_value_unlocked(arch_spinlock_t lock) in arch_spin_value_unlocked() argument
51 return lock.lock == 0; in arch_spin_value_unlocked()
56 return ACCESS_ONCE(lp->lock) != 0; in arch_spin_is_locked()
63 _raw_compare_and_swap(&lp->lock, 0, SPINLOCK_LOCKVAL)); in arch_spin_trylock_once()
88 typecheck(unsigned int, lp->lock); in arch_spin_unlock()
91 : "+Q" (lp->lock) in arch_spin_unlock()
96 static inline void arch_spin_unlock_wait(arch_spinlock_t *lock) in arch_spin_unlock_wait() argument
98 while (arch_spin_is_locked(lock)) in arch_spin_unlock_wait()
99 arch_spin_relax(lock); in arch_spin_unlock_wait()
117 #define arch_read_can_lock(x) ((int)(x)->lock >= 0)
123 #define arch_write_can_lock(x) ((x)->lock == 0)
128 #define arch_read_lock_flags(lock, flags) arch_read_lock(lock) argument
129 #define arch_write_lock_flags(lock, flags) arch_write_lock(lock) argument
133 unsigned int old = ACCESS_ONCE(rw->lock); in arch_read_trylock_once()
135 _raw_compare_and_swap(&rw->lock, old, old + 1)); in arch_read_trylock_once()
140 unsigned int old = ACCESS_ONCE(rw->lock); in arch_write_trylock_once()
142 _raw_compare_and_swap(&rw->lock, 0, 0x80000000)); in arch_write_trylock_once()
185 old = __RAW_LOCK(&rw->lock, 1, __RAW_OP_ADD); in arch_read_lock()
192 __RAW_UNLOCK(&rw->lock, -1, __RAW_OP_ADD); in arch_read_unlock()
199 old = __RAW_LOCK(&rw->lock, 0x80000000, __RAW_OP_OR); in arch_write_lock()
208 __RAW_UNLOCK(&rw->lock, 0x7fffffff, __RAW_OP_AND); in arch_write_unlock()
227 old = ACCESS_ONCE(rw->lock); in arch_read_unlock()
228 } while (!_raw_compare_and_swap(&rw->lock, old, old - 1)); in arch_read_unlock()
240 typecheck(unsigned int, rw->lock); in arch_write_unlock()
245 : "+Q" (rw->lock) in arch_write_unlock()