ring: allow non power-of-2 sizes
authorBruce Richardson <bruce.richardson@intel.com>
Fri, 30 Jun 2017 15:06:17 +0000 (16:06 +0100)
committerJerin Jacob <jerin.jacob@caviumnetworks.com>
Fri, 7 Jul 2017 07:29:17 +0000 (09:29 +0200)
commitb74461155543430f5253e96ad6d413ebcad36693
tree80d9e24c1a1499fbf40d732435a8f669452e933c
parente88d2bef46e3be75567ef6f05f22b866a1b4a66e
ring: allow non power-of-2 sizes

The rte_rings traditionally have only supported having ring sizes as powers
of 2, with the actual usable space being the size - 1. In some cases, for
example, with an eventdev where we want to precisely control queue depths
for latency, we need to allow ring sizes which are not powers of two so we
add in an additional ring capacity value to allow that. For existing rings,
this value will be size-1, i.e. the same as the mask, but if the new
EXACT_SZ flag is passed on ring creation, the ring will have exactly the
usable space requested, although the underlying memory size may be bigger.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
lib/librte_ring/rte_ring.c
lib/librte_ring/rte_ring.h