Lines Matching defs:lock
14 static __always_inline u32 queued_fetch_set_pending_acquire(struct qspinlock *lock)
23 val = GEN_BINARY_RMWcc(LOCK_PREFIX "btsl", lock->val.counter, c,
25 val |= atomic_read(&lock->val) & ~_Q_PENDING_MASK;
31 extern void native_queued_spin_lock_slowpath(struct qspinlock *lock, u32 val);
33 extern void __pv_queued_spin_lock_slowpath(struct qspinlock *lock, u32 val);
34 extern void __raw_callee_save___pv_queued_spin_unlock(struct qspinlock *lock);
40 * @lock : Pointer to queued spinlock structure
44 static inline void native_queued_spin_unlock(struct qspinlock *lock)
46 smp_store_release(&lock->locked, 0);
49 static inline void queued_spin_lock_slowpath(struct qspinlock *lock, u32 val)
51 pv_queued_spin_lock_slowpath(lock, val);
54 static inline void queued_spin_unlock(struct qspinlock *lock)
56 pv_queued_spin_unlock(lock);
83 * true - lock has been negotiated, all done;
87 static inline bool virt_spin_lock(struct qspinlock *lock)
95 * horrible lock 'holder' preemption issues.
99 while (atomic_read(&lock->val) != 0)
101 } while (atomic_cmpxchg(&lock->val, 0, _Q_LOCKED_VAL) != 0);