qnode
struct qnode *next;
static struct qnode *get_tail_qnode(struct qspinlock *lock, int prev_cpu)
struct qnode nodes[MAX_NODES];
struct qnode *qnode = &qnodesp->nodes[idx];
if (qnode->lock == lock)
return qnode;
static __always_inline void propagate_sleepy(struct qnode *node, u32 val, bool paravirt)
struct qnode *next;
static __always_inline bool yield_to_prev(struct qspinlock *lock, struct qnode *node, int prev_cpu, bool paravirt)
struct qnode *next, *node;
struct qnode *prev = get_tail_qnode(lock, prev_cpu);
struct qcom_icc_node *qnode;
qnode = qp->nodes[i];
if (!qnode)
if (qnode->qosbox)
qcom_icc_set_qos(qp, qnode);
static DEFINE_PER_CPU_ALIGNED(struct qnode, rqnodes[_Q_MAX_NODES]);
static DEFINE_PER_CPU_ALIGNED(struct qnode, qnodes[_Q_MAX_NODES]);
struct qnode __percpu *qnodes)
return &((struct qnode *)base + idx)->mcs;
BUILD_BUG_ON(sizeof(struct pv_node) > sizeof(struct qnode));