-static uint32_t fifo_index (fifo_t *q, uint32_t i) {
- return i & MASK(q->scale);
-}
-
-static void fifo_enqueue (fifo_t *q, void *x) {
- assert(fifo_index(q, q->head + 1) != fifo_index(q, q->tail));
- uint32_t i = fifo_index(q, q->head++);
- q->x[i] = x;
-}
-
-static void *fifo_dequeue (fifo_t *q) {
- uint32_t i = fifo_index(q, q->tail++);
- return q->x[i];
-}
-