Lines Matching defs:prev
16 struct optimistic_spin_node *next, *prev;
64 * We were the last queued, we moved @lock back. @prev
74 * @node->next might complete Step-A and think its @prev is
96 struct optimistic_spin_node *prev, *next;
114 prev = decode_cpu(old);
115 node->prev = prev;
120 * node->prev = prev osq_wait_next()
122 * prev->next = node next->prev = prev // unqueue-C
124 * Here 'node->prev' and 'next->prev' are the same variable and we need
129 WRITE_ONCE(prev->next, node);
132 * Normally @prev is untouchable after the above store; because at that
147 vcpu_is_preempted(node_cpu(node->prev))))
152 * Step - A -- stabilize @prev
154 * Undo our @prev->next assignment; this will make @prev's
164 if (data_race(prev->next) == node &&
165 cmpxchg(&prev->next, node, NULL) == node)
180 * case its step-C will write us a new @node->prev pointer.
182 prev = READ_ONCE(node->prev);
189 * back to @prev.
192 next = osq_wait_next(lock, node, prev->cpu);
199 * @prev is stable because its still waiting for a new @prev->next
204 WRITE_ONCE(next->prev, prev);
205 WRITE_ONCE(prev->next, next);