{
void *area;
- if (b_size(&ring->buf) >= size)
+ if (ring_size(ring) >= size)
return ring;
area = malloc(size);
HA_RWLOCK_WRLOCK(RING_LOCK, &ring->lock);
/* recheck the buffer's size, it may have changed during the malloc */
- if (b_size(&ring->buf) < size) {
+ if (ring_size(ring) < size) {
/* copy old contents */
- b_getblk(&ring->buf, area, ring->buf.data, 0);
+ b_getblk(&ring->buf, area, ring_data(ring), 0);
area = HA_ATOMIC_XCHG(&ring->buf.area, area);
ring->buf.size = size;
}
if (ring->buf.area == (void *)ring + sizeof(*ring))
return;
- free(ring->buf.area);
+ free(ring_area(ring));
free(ring);
}
HA_RWLOCK_WRLOCK(RING_LOCK, &ring->lock);
if (ofs != ~0) {
/* reader was still attached */
- if (ofs < b_head_ofs(&ring->buf))
- ofs += b_size(&ring->buf) - b_head_ofs(&ring->buf);
+ if (ofs < ring_head(ring))
+ ofs += ring_size(ring) - ring_head(ring);
else
- ofs -= b_head_ofs(&ring->buf);
+ ofs -= ring_head(ring);
- BUG_ON(ofs >= b_size(&ring->buf));
+ BUG_ON(ofs >= ring_size(ring));
LIST_DEL_INIT(&appctx->wait_entry);
HA_ATOMIC_DEC(b_peek(&ring->buf, ofs));
}
/* let's be woken up once new data arrive */
HA_RWLOCK_WRLOCK(RING_LOCK, &ring->lock);
LIST_APPEND(&ring->waiters, &appctx->wait_entry);
- ofs = b_tail_ofs(&ring->buf);
+ ofs = ring_tail(ring);
HA_RWLOCK_WRUNLOCK(RING_LOCK, &ring->lock);
if (ofs != last_ofs) {
/* more data was added into the ring between the
size_t max;
/* initial max = bufsize - 1 (initial RC) - 1 (payload RC) */
- max = b_size(&ring->buf) - 1 - 1;
+ max = ring_size(ring) - 1 - 1;
/* subtract payload VI (varint-encoded size) */
max -= varint_bytes(max);
/* let's be woken up once new data arrive */
HA_RWLOCK_WRLOCK(RING_LOCK, &ring->lock);
LIST_APPEND(&ring->waiters, &appctx->wait_entry);
- ofs = b_tail_ofs(&ring->buf);
+ ofs = ring_tail(ring);
HA_RWLOCK_WRUNLOCK(RING_LOCK, &ring->lock);
if (ofs != last_ofs) {
/* more data was added into the ring between the
/* let's be woken up once new data arrive */
HA_RWLOCK_WRLOCK(RING_LOCK, &ring->lock);
LIST_APPEND(&ring->waiters, &appctx->wait_entry);
- ofs = b_tail_ofs(&ring->buf);
+ ofs = ring_tail(ring);
HA_RWLOCK_WRUNLOCK(RING_LOCK, &ring->lock);
if (ofs != last_ofs) {
/* more data was added into the ring between the
return;
if (sink->type == SINK_TYPE_BUFFER) {
if (sink->store) {
- size_t size = (sink->ctx.ring->buf.size + 4095UL) & -4096UL;
- void *area = (sink->ctx.ring->buf.area - sizeof(*sink->ctx.ring));
+ size_t size = (ring_size(sink->ctx.ring) + 4095UL) & -4096UL;
+ void *area = (ring_area(sink->ctx.ring) - sizeof(*sink->ctx.ring));
msync(area, size, MS_SYNC);
munmap(area, size);
goto err;
}
- if (size < cfg_sink->ctx.ring->buf.size) {
+ if (size < ring_size(cfg_sink->ctx.ring)) {
ha_warning("parsing [%s:%d] : ignoring new size '%llu' that is smaller than current size '%llu' for ring '%s'.\n",
- file, linenum, (ullong)size, (ullong)cfg_sink->ctx.ring->buf.size, cfg_sink->name);
+ file, linenum, (ullong)size, (ullong)ring_size(cfg_sink->ctx.ring), cfg_sink->name);
err_code |= ERR_WARN;
goto err;
}
if (!ring_resize(cfg_sink->ctx.ring, size)) {
ha_alert("parsing [%s:%d] : fail to set sink buffer size '%llu' for ring '%s'.\n", file, linenum,
- (ullong)cfg_sink->ctx.ring->buf.size, cfg_sink->name);
+ (ullong)ring_size(cfg_sink->ctx.ring), cfg_sink->name);
err_code |= ERR_ALERT | ERR_FATAL;
goto err;
}
goto err;
}
- size = (cfg_sink->ctx.ring->buf.size + 4095UL) & -4096UL;
+ size = (ring_size(cfg_sink->ctx.ring) + 4095UL) & -4096UL;
if (ftruncate(fd, size) != 0) {
close(fd);
ha_alert("parsing [%s:%d] : could not adjust size of backing-file for ring '%s': %s.\n", file, linenum, cfg_sink->name, strerror(errno));