@@ -156,10 +156,11 @@ typedef struct odph_ring {
} odph_ring_t;
-#define ODPH_RING_F_SP_ENQ 0x0001 /* The default enqueue is "single-producer".*/
-#define ODPH_RING_F_SC_DEQ 0x0002 /* The default dequeue is "single-consumer".*/
-#define ODPH_RING_SHM_PROC 0x0004 /* If set - ring is visible from different
+#define ODPH_RING_F_SP_ENQ (1 << 0) /* The default enqueue is "single-producer".*/
+#define ODPH_RING_F_SC_DEQ (1 << 1) /* The default dequeue is "single-consumer".*/
+#define ODPH_RING_SHM_PROC (1 << 2) /* If set - ring is visible from different
processes. Default is thread visible. */
+#define ODPH_RING_NO_LIST (1 << 3) /* Do not link ring to linked list. */
#define ODPH_RING_QUOT_EXCEED (1 << 31) /* Quota exceed for burst ops */
#define ODPH_RING_SZ_MASK (unsigned)(0x0fffffff) /* Ring size mask */
@@ -199,7 +199,8 @@ odph_ring_create(const char *name, unsigned count, unsigned flags)
r->prod.tail = 0;
r->cons.tail = 0;
- TAILQ_INSERT_TAIL(&odp_ring_list, r, next);
+ if (!(flags & ODPH_RING_NO_LIST))
+ TAILQ_INSERT_TAIL(&odp_ring_list, r, next);
} else {
ODPH_ERR("Cannot reserve memory\n");
}
Add flag ODPH_RING_NO_LIST to ring to not link it to linked list. Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org> --- helper/include/odp/helper/ring.h | 7 ++++--- helper/ring.c | 3 ++- 2 files changed, 6 insertions(+), 4 deletions(-)