Lines Matching refs:node
65 static inline bool spsc_queue_push(struct spsc_queue *queue, struct spsc_node *node) in spsc_queue_push() argument
69 node->next = NULL; in spsc_queue_push()
76 tail = (struct spsc_node **)atomic_long_xchg(&queue->tail, (long)&node->next); in spsc_queue_push()
77 WRITE_ONCE(*tail, node); in spsc_queue_push()
93 struct spsc_node *next, *node; in spsc_queue_pop() local
98 node = READ_ONCE(queue->head); in spsc_queue_pop()
100 if (!node) in spsc_queue_pop()
103 next = READ_ONCE(node->next); in spsc_queue_pop()
110 (long)&node->next, (long) &queue->head) != (long)&node->next) { in spsc_queue_pop()
114 } while (unlikely(!(queue->head = READ_ONCE(node->next)))); in spsc_queue_pop()
119 return node; in spsc_queue_pop()