We have no way to know how many buffers are currently allocated in a
buffer ring. Let's add br_count() for this.
return r->data + 1 == r->head || r->data + 1 == r->head - 1 + r->size;
}
+/* Returns the number of buffers present */
+static inline unsigned int br_count(const struct buffer *r)
+{
+ BUG_ON_HOT(r->area != BUF_RING.area);
+
+ if (r->data >= r->head)
+ return r->data - r->head + 1;
+ else
+ return r->data + r->size - r->head;
+}
+
/* Returns the index of the ring's head buffer */
static inline unsigned int br_head_idx(const struct buffer *r)
{