mcs_spinlock
struct mcs_spinlock *next;
struct mcs_spinlock *prev, *next, *node;
void mcs_spin_lock(struct mcs_spinlock **lock, struct mcs_spinlock *node)
struct mcs_spinlock *prev;
void mcs_spin_unlock(struct mcs_spinlock **lock, struct mcs_spinlock *node)
struct mcs_spinlock *next = READ_ONCE(node->next);
struct mcs_spinlock *prev, *next, *node;
static __always_inline void __pv_init_node(struct mcs_spinlock *node) { }
static __always_inline void __pv_wait_node(struct mcs_spinlock *node,
struct mcs_spinlock *prev) { }
struct mcs_spinlock *node) { }
struct mcs_spinlock *node)
struct mcs_spinlock mcs;
static inline __pure struct mcs_spinlock *decode_tail(u32 tail,
struct mcs_spinlock *grab_mcs_node(struct mcs_spinlock *base, int idx)
static void pv_init_node(struct mcs_spinlock *node)
static void pv_wait_node(struct mcs_spinlock *node, struct mcs_spinlock *prev)
static void pv_kick_node(struct qspinlock *lock, struct mcs_spinlock *node)
pv_wait_head_or_lock(struct qspinlock *lock, struct mcs_spinlock *node)
struct mcs_spinlock mcs;