Lines Matching refs:node
15 * protected by the "barrier" locks in each node, which are unlocked
64 struct waiter node = { 0 };
84 seq = node.barrier = 2;
85 fut = &node.barrier;
86 node.state = WAITING;
87 node.next = c->_c_head;
88 c->_c_head = &node;
89 if (!c->_c_tail) c->_c_tail = &node;
90 else node.next->prev = &node;
115 oldstate = a_cas(&node.state, WAITING, LEAVING);
125 if (c->_c_head == &node) c->_c_head = node.next;
126 else if (node.prev) node.prev->next = node.next;
127 if (c->_c_tail == &node) c->_c_tail = node.prev;
128 else if (node.next) node.next->prev = node.prev;
132 if (node.notify) {
133 if (a_fetch_add(node.notify, -1)==1)
134 __wake(node.notify, 1, 1);
138 lock(&node.barrier);
149 if (!node.next && !(m->_m_type & 8))
154 if (node.prev) {
157 unlock_requeue(&node.prev->barrier, &m->_m_lock, m->_m_type & (8|128));