X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Fvppinfra%2Fring.h;h=ae25e40b5c0721711e174cab44b53202a14ec4d1;hb=e12f69f7731d4bbb923b7d263179a9d530ce09db;hp=d7e19156482330f7a064554ebaa0228d44446fab;hpb=299571aca34d36e637e43cfbba6275662d0d7795;p=vpp.git diff --git a/src/vppinfra/ring.h b/src/vppinfra/ring.h index d7e19156482..ae25e40b5c0 100644 --- a/src/vppinfra/ring.h +++ b/src/vppinfra/ring.h @@ -32,21 +32,25 @@ clib_ring_header (void *v) return vec_header (v); } +always_inline void +clib_ring_reset (void *v) +{ + clib_ring_header_t *h = clib_ring_header (v); + h->next = 0; + h->n_enq = 0; +} + always_inline void clib_ring_new_inline (void **p, u32 elt_bytes, u32 size, u32 align) { void *v; - clib_ring_header_t *h; + vec_attr_t va = { .elt_sz = elt_bytes, + .hdr_sz = sizeof (clib_ring_header_t), + .align = align }; - v = _vec_realloc (0, - /* length increment */ size, - /* data bytes */ elt_bytes, - /* header bytes */ sizeof (h[0]), - /* data align */ align, 0); + v = _vec_alloc_internal (size, &va); - h = clib_ring_header (v); - h->next = 0; - h->n_enq = 0; + clib_ring_reset (v); p[0] = v; }