10#ifndef _RTE_RING_CORE_H_
11#define _RTE_RING_CORE_H_
28#include <rte_config.h>
37#define RTE_TAILQ_RING_NAME "RTE_RING"
47#define RTE_RING_MZ_PREFIX "RG_"
49#define RTE_RING_NAMESIZE (RTE_MEMZONE_NAMESIZE - \
50 sizeof(RTE_RING_MZ_PREFIX) + 1)
66 volatile RTE_ATOMIC(uint32_t) head;
67 volatile RTE_ATOMIC(uint32_t) tail;
76union __rte_ring_rts_poscnt {
78 alignas(
sizeof(uint64_t)) RTE_ATOMIC(uint64_t) raw;
85struct rte_ring_rts_headtail {
86 volatile union __rte_ring_rts_poscnt tail;
89 volatile union __rte_ring_rts_poscnt head;
92union __rte_ring_hts_pos {
94 alignas(
sizeof(uint64_t)) RTE_ATOMIC(uint64_t) raw;
96 RTE_ATOMIC(uint32_t) head;
97 RTE_ATOMIC(uint32_t) tail;
101struct rte_ring_hts_headtail {
102 volatile union __rte_ring_hts_pos ht;
131 struct rte_ring_hts_headtail hts_prod;
132 struct rte_ring_rts_headtail rts_prod;
140 struct rte_ring_hts_headtail hts_cons;
141 struct rte_ring_rts_headtail rts_cons;
147#define RING_F_SP_ENQ 0x0001
148#define RING_F_SC_DEQ 0x0002
157#define RING_F_EXACT_SZ 0x0004
158#define RTE_RING_SZ_MASK (0x7fffffffU)
160#define RING_F_MP_RTS_ENQ 0x0008
161#define RING_F_MC_RTS_DEQ 0x0010
163#define RING_F_MP_HTS_ENQ 0x0020
164#define RING_F_MC_HTS_DEQ 0x0040
#define RTE_RING_NAMESIZE
@ RTE_RING_QUEUE_VARIABLE
enum rte_ring_sync_type sync_type
char name[RTE_RING_NAMESIZE]
const struct rte_memzone * memzone