| 57 | }; |
| 58 | |
| 59 | static inline uint16_t |
| 60 | space_available(struct ifmp_ring *r, union ring_state s) |
| 61 | { |
| 62 | uint16_t x = r->size - 1; |
| 63 | |
| 64 | if (s.cidx == s.pidx_head) |
| 65 | return (x); |
| 66 | else if (s.cidx > s.pidx_head) |
| 67 | return (s.cidx - s.pidx_head - 1); |
| 68 | else |
| 69 | return (x - s.pidx_head + s.cidx); |
| 70 | } |
| 71 | |
| 72 | static inline uint16_t |
| 73 | increment_idx(struct ifmp_ring *r, uint16_t idx, uint16_t n) |