Lines Matching defs:node
62 struct spin_wait *node;
65 node = per_cpu_ptr(&spin_wait[0], cpu);
66 for (ix = 0; ix < 4; ix++, node++) {
67 memset(node, 0, sizeof(*node));
68 node->node_id = ((cpu + 1) << _Q_TAIL_CPU_OFFSET) +
106 static inline int arch_spin_yield_target(int lock, struct spin_wait *node)
110 if (node == NULL || node->prev == NULL)
112 while (node->prev)
113 node = node->prev;
114 return node->node_id >> _Q_TAIL_CPU_OFFSET;
119 struct spin_wait *node, *next;
125 node = this_cpu_ptr(&spin_wait[ix]);
126 node->prev = node->next = NULL;
127 node_id = node->node_id;
129 /* Enqueue the node for this CPU in the spinlock wait queue */
148 /* Make the node of this CPU the new tail. */
153 /* Set the 'next' pointer of the tail node in the queue */
156 node->prev = arch_spin_decode_tail(tail_id);
157 WRITE_ONCE(node->prev->next, node);
161 owner = arch_spin_yield_target(old, node);
165 /* Spin on the CPU local node->prev pointer */
168 while (READ_ONCE(node->prev) != NULL) {
173 owner = arch_spin_yield_target(old, node);
202 while ((next = READ_ONCE(node->next)) == NULL)