Following on from the refactoring of the rte_rings code done in the 17.05 release, it becomes relatively easy to create new ring implementations for data types other than "void *". The first candidate for this is the rte_event type, which being 16B in size, is small enough to be passed around directly rather than via pointer.
The SW eventdev implementation already defines an event ring implementation and this can be replaced by a more general implementation done in the eventdev library itself. However, feature parity between the SW eventdev implementation and a general rte_ring implementation is required, so support for rings of a defined size is added to the rte_ring library first. Bruce Richardson (5): ring: allow rings with non power-of-2 sizes test/test: add unit tests for exact size rings eventdev: add ring structure for events test/test: add auto-tests for event ring functions event/sw: change worker rings to standard event rings drivers/event/sw/event_ring.h | 185 ---------------- drivers/event/sw/sw_evdev.c | 38 ++-- drivers/event/sw/sw_evdev.h | 4 +- drivers/event/sw/sw_evdev_scheduler.c | 19 +- drivers/event/sw/sw_evdev_worker.c | 28 ++- drivers/event/sw/sw_evdev_xstats.c | 15 +- lib/Makefile | 2 +- lib/librte_eventdev/Makefile | 2 + lib/librte_eventdev/rte_event_ring.c | 207 ++++++++++++++++++ lib/librte_eventdev/rte_event_ring.h | 312 +++++++++++++++++++++++++++ lib/librte_eventdev/rte_eventdev_version.map | 9 + lib/librte_ring/rte_ring.c | 26 ++- lib/librte_ring/rte_ring.h | 88 +++++--- test/test/Makefile | 1 + test/test/test_event_ring.c | 275 +++++++++++++++++++++++ test/test/test_ring.c | 71 ++++++ 16 files changed, 1020 insertions(+), 262 deletions(-) delete mode 100644 drivers/event/sw/event_ring.h create mode 100644 lib/librte_eventdev/rte_event_ring.c create mode 100644 lib/librte_eventdev/rte_event_ring.h create mode 100644 test/test/test_event_ring.c -- 2.9.4