From 4768c47500ed967438439e6ba78ab16b6946c8de Mon Sep 17 00:00:00 2001 From: Bruce Richardson Date: Wed, 30 Sep 2015 13:12:20 +0100 Subject: [PATCH] ring: store memzone pointer Add a new field to the rte_ring structure to store the memzone pointer which contains the ring. For rings created using rte_ring_create(), the field will be set automatically. This new field will allow users of the ring to query the numa node a ring is allocated on, or to get the physical address of the ring, if so needed. The rte_ring structure will also maintain ABI compatibility, as the structure members, after the new one, are set to be cache line aligned, so leaving a space. Signed-off-by: Bruce Richardson Acked-by: Olivier Matz Acked-by: Pablo de Lara --- lib/librte_ring/rte_ring.c | 1 + lib/librte_ring/rte_ring.h | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/lib/librte_ring/rte_ring.c b/lib/librte_ring/rte_ring.c index c9e59d4cf0..4e78e144c9 100644 --- a/lib/librte_ring/rte_ring.c +++ b/lib/librte_ring/rte_ring.c @@ -196,6 +196,7 @@ rte_ring_create(const char *name, unsigned count, int socket_id, rte_ring_init(r, name, count, flags); te->data = (void *) r; + r->memzone = mz; TAILQ_INSERT_TAIL(ring_list, te, next); } else { diff --git a/lib/librte_ring/rte_ring.h b/lib/librte_ring/rte_ring.h index af68888fc1..df45f3ff99 100644 --- a/lib/librte_ring/rte_ring.h +++ b/lib/librte_ring/rte_ring.h @@ -134,6 +134,8 @@ struct rte_ring_debug_stats { * if RTE_RING_PAUSE_REP not defined. */ #endif +struct rte_memzone; /* forward declaration, so as not to require memzone.h */ + /** * An RTE ring structure. * @@ -147,6 +149,8 @@ struct rte_ring_debug_stats { struct rte_ring { char name[RTE_RING_NAMESIZE]; /**< Name of the ring. */ int flags; /**< Flags supplied at creation. */ + const struct rte_memzone *memzone; + /**< Memzone, if any, containing the rte_ring */ /** Ring producer status. */ struct prod { -- 2.20.1