Lines Matching defs:lock

6  * Simple spin lock operations.
35 static __always_inline int arch_spin_value_unlocked(arch_spinlock_t lock)
37 return lock.slock == 0;
40 static inline int arch_spin_is_locked(arch_spinlock_t *lock)
42 return !arch_spin_value_unlocked(READ_ONCE(*lock));
46 * This returns the old value in the lock, so we succeeded
47 * in getting the lock if the return value is 0.
49 static inline unsigned long __arch_spin_trylock(arch_spinlock_t *lock)
64 : "r" (token), "r" (&lock->slock), [eh] "n" (eh)
70 static inline int arch_spin_trylock(arch_spinlock_t *lock)
72 return __arch_spin_trylock(lock) == 0;
78 * there is no point spinning on a lock if the holder of the lock
81 * rest of our timeslice to the lock holder.
83 * So that we can tell which virtual processor is holding a lock,
84 * we put 0x80000000 | smp_processor_id() in the lock when it is
91 void splpar_spin_yield(arch_spinlock_t *lock);
92 void splpar_rw_yield(arch_rwlock_t *lock);
94 static inline void splpar_spin_yield(arch_spinlock_t *lock) {}
95 static inline void splpar_rw_yield(arch_rwlock_t *lock) {}
98 static inline void spin_yield(arch_spinlock_t *lock)
101 splpar_spin_yield(lock);
106 static inline void rw_yield(arch_rwlock_t *lock)
109 splpar_rw_yield(lock);
114 static inline void arch_spin_lock(arch_spinlock_t *lock)
117 if (likely(__arch_spin_trylock(lock) == 0))
122 splpar_spin_yield(lock);
123 } while (unlikely(lock->slock != 0));
128 static inline void arch_spin_unlock(arch_spinlock_t *lock)
133 lock->slock = 0;
143 * irq-safe write-lock, but readers can get non-irqsafe
156 * This returns the old value in the lock + 1,
157 * so we got a read lock if the return value is > 0.
173 : "r" (&rw->lock), [eh] "n" (eh)
180 * This returns the old value in the lock,
181 * so we got the write lock if the return value is 0.
197 : "r" (token), "r" (&rw->lock), [eh] "n" (eh)
212 } while (unlikely(rw->lock < 0));
226 } while (unlikely(rw->lock != 0));
253 : "r"(&rw->lock)
261 rw->lock = 0;
264 #define arch_spin_relax(lock) spin_yield(lock)
265 #define arch_read_relax(lock) rw_yield(lock)
266 #define arch_write_relax(lock) rw_yield(lock)