Lines Matching refs:node
25 static inline int node_cpu(struct optimistic_spin_node *node) in node_cpu() argument
27 return node->cpu - 1; in node_cpu()
43 struct optimistic_spin_node *node, in osq_wait_next() argument
78 if (node->next) { in osq_wait_next()
79 next = xchg(&node->next, NULL); in osq_wait_next()
92 struct optimistic_spin_node *node = this_cpu_ptr(&osq_node); in osq_lock() local
97 node->locked = 0; in osq_lock()
98 node->next = NULL; in osq_lock()
99 node->cpu = curr; in osq_lock()
112 node->prev = prev; in osq_lock()
126 WRITE_ONCE(prev->next, node); in osq_lock()
143 if (smp_cond_load_relaxed(&node->locked, VAL || need_resched() || in osq_lock()
144 vcpu_is_preempted(node_cpu(node->prev)))) in osq_lock()
161 if (data_race(prev->next) == node && in osq_lock()
162 cmpxchg(&prev->next, node, NULL) == node) in osq_lock()
170 if (smp_load_acquire(&node->locked)) in osq_lock()
179 prev = READ_ONCE(node->prev); in osq_lock()
189 next = osq_wait_next(lock, node, prev); in osq_lock()
209 struct optimistic_spin_node *node, *next; in osq_unlock() local
222 node = this_cpu_ptr(&osq_node); in osq_unlock()
223 next = xchg(&node->next, NULL); in osq_unlock()
229 next = osq_wait_next(lock, node, NULL); in osq_unlock()