Lines Matching refs:cons_head
120 uint32_t cons_head, cons_next;
125 cons_head = br->br_cons_head;
126 cons_next = (cons_head + 1) & br->br_cons_mask;
128 if (cons_head == br->br_prod_tail) {
132 } while (!atomic_cmpset_acq_int(&br->br_cons_head, cons_head, cons_next));
134 buf = br->br_ring[cons_head];
136 br->br_ring[cons_head] = NULL;
143 while (br->br_cons_tail != cons_head)
160 uint32_t cons_head, cons_next;
180 * cons_head = br->br_cons_head;
182 * buf = br->br_ring[cons_head]; <see <1>>
186 * if (cons_head == prod_tail)
190 * <1> Load (on core 1) from br->br_ring[cons_head] can be reordered (speculative readed) by CPU.
193 cons_head = atomic_load_acq_32(&br->br_cons_head);
195 cons_head = br->br_cons_head;
199 cons_next = (cons_head + 1) & br->br_cons_mask;
201 cons_next_next = (cons_head + 2) & br->br_cons_mask;
204 if (cons_head == prod_tail)
215 buf = br->br_ring[cons_head];
218 br->br_ring[cons_head] = NULL;
221 if (br->br_cons_tail != cons_head)
222 panic("inconsistent list cons_tail=%d cons_head=%d",
223 br->br_cons_tail, cons_head);
237 uint32_t cons_head, cons_next;
240 cons_head = br->br_cons_head;
243 cons_next = (cons_head + 1) & br->br_cons_mask;
244 if (cons_head == prod_tail)
248 br->br_ring[cons_head] = NULL;
322 * Single consumer, i.e. cons_head will not move while we are