Lines Matching refs:next
16 struct optimistic_spin_node *next, *prev; member
81 if (node->next) { in osq_wait_next()
82 struct optimistic_spin_node *next; in osq_wait_next() local
84 next = xchg(&node->next, NULL); in osq_wait_next()
85 if (next) in osq_wait_next()
86 return next; in osq_wait_next()
96 struct optimistic_spin_node *prev, *next; in osq_lock() local
101 node->next = NULL; in osq_lock()
129 WRITE_ONCE(prev->next, node); in osq_lock()
164 if (data_race(prev->next) == node && in osq_lock()
165 cmpxchg(&prev->next, node, NULL) == node) in osq_lock()
192 next = osq_wait_next(lock, node, prev->cpu); in osq_lock()
193 if (!next) in osq_lock()
204 WRITE_ONCE(next->prev, prev); in osq_lock()
205 WRITE_ONCE(prev->next, next); in osq_lock()
212 struct optimistic_spin_node *node, *next; in osq_unlock() local
226 next = xchg(&node->next, NULL); in osq_unlock()
227 if (next) { in osq_unlock()
228 WRITE_ONCE(next->locked, 1); in osq_unlock()
232 next = osq_wait_next(lock, node, OSQ_UNLOCKED_VAL); in osq_unlock()
233 if (next) in osq_unlock()
234 WRITE_ONCE(next->locked, 1); in osq_unlock()