ring_buf
static void ring_buf_clear(struct ring_buf *r)
static int ring_buf_resize(struct ring_buf *r, size_t nbytes)
struct ring_buf {
struct ring_buf rbuf;
static int ring_buf_init(struct ring_buf *r, size_t nbytes)
static void ring_buf_destroy(struct ring_buf *r)
static void ring_buf_head_tail(struct ring_buf *r, int idx, uint8_t **buf, size_t *len)
static void ring_buf_push_pop(struct ring_buf *r, int idx, size_t num_bytes)
static ossl_inline size_t ring_buf_push(struct ring_buf *r,
static ossl_inline const unsigned char *ring_buf_get_ptr(const struct ring_buf *r,
static ossl_inline int ring_buf_get_buf_at(const struct ring_buf *r,
static ossl_inline void ring_buf_cpop_range(struct ring_buf *r,
static ossl_inline int ring_buf_resize(struct ring_buf *r, size_t num_bytes,
struct ring_buf rnew = { 0 };
static ossl_inline int ring_buf_init(struct ring_buf *r)
static ossl_inline void ring_buf_destroy(struct ring_buf *r, int cleanse)
static ossl_inline size_t ring_buf_used(struct ring_buf *r)
static ossl_inline size_t ring_buf_avail(struct ring_buf *r)
static ossl_inline int ring_buf_write_at(struct ring_buf *r,
struct ring_buf rbuf;
struct ring_buf *rbuf = cb_arg;
hdr->offset = qss->ring_buf.head_offset;
if (!ring_buf_get_buf_at(&qss->ring_buf,
&& hdr->offset + hdr->len == qss->ring_buf.head_offset;
return qss->ring_buf.head_offset;
struct ring_buf ring_buf;
if (!qss->have_final_size || final_size != qss->ring_buf.head_offset)
*final_size = qss->ring_buf.head_offset;
struct ring_buf old_ring_buf = qss->ring_buf;
l = ring_buf_push(&qss->ring_buf, buf, buf_len);
assert(r.end + 1 == qss->ring_buf.head_offset);
qss->ring_buf = old_ring_buf;
ring_buf_cpop_range(&qss->ring_buf, h->range.start, h->range.end,
return ring_buf_resize(&qss->ring_buf, num_bytes, qss->cleanse);
return qss->ring_buf.alloc;
return ring_buf_used(&qss->ring_buf);
return ring_buf_avail(&qss->ring_buf);
cur_size = qss->ring_buf.head_offset;
ring_buf_init(&qss->ring_buf);
if (!ring_buf_resize(&qss->ring_buf, init_buf_size, 0)) {
ring_buf_destroy(&qss->ring_buf, 0);
ring_buf_destroy(&qss->ring_buf, qss->cleanse);