Lines Matching refs:node
82 struct spin_wait *node; in arch_spin_lock_setup() local
85 node = per_cpu_ptr(&spin_wait[0], cpu); in arch_spin_lock_setup()
86 for (ix = 0; ix < 4; ix++, node++) { in arch_spin_lock_setup()
87 memset(node, 0, sizeof(*node)); in arch_spin_lock_setup()
88 node->node_id = ((cpu + 1) << _Q_TAIL_CPU_OFFSET) + in arch_spin_lock_setup()
145 static inline int arch_spin_yield_target(int lock, struct spin_wait *node) in arch_spin_yield_target() argument
149 if (node == NULL || node->prev == NULL) in arch_spin_yield_target()
151 while (node->prev) in arch_spin_yield_target()
152 node = node->prev; in arch_spin_yield_target()
153 return node->node_id >> _Q_TAIL_CPU_OFFSET; in arch_spin_yield_target()
158 struct spin_wait *node, *next; in arch_spin_lock_queued() local
164 node = this_cpu_ptr(&spin_wait[ix]); in arch_spin_lock_queued()
165 node->prev = node->next = NULL; in arch_spin_lock_queued()
166 node_id = node->node_id; in arch_spin_lock_queued()
195 node->prev = arch_spin_decode_tail(tail_id); in arch_spin_lock_queued()
196 WRITE_ONCE(node->prev->next, node); in arch_spin_lock_queued()
200 owner = arch_spin_yield_target(old, node); in arch_spin_lock_queued()
207 while (READ_ONCE(node->prev) != NULL) { in arch_spin_lock_queued()
212 owner = arch_spin_yield_target(old, node); in arch_spin_lock_queued()
241 while ((next = READ_ONCE(node->next)) == NULL) in arch_spin_lock_queued()