10 #ifndef _RTE_RING_HTS_H_
11 #define _RTE_RING_HTS_H_
57 __rte_ring_do_hts_enqueue_elem(
struct rte_ring *r,
const void *obj_table,
63 n = __rte_ring_hts_move_prod_head(r, n, behavior, &head, &free);
66 __rte_ring_enqueue_elems(r, head, obj_table, esize, n);
67 __rte_ring_hts_update_tail(&r->hts_prod, head, n, 1);
70 if (free_space != NULL)
71 *free_space = free - n;
98 __rte_ring_do_hts_dequeue_elem(
struct rte_ring *r,
void *obj_table,
102 uint32_t entries, head;
104 n = __rte_ring_hts_move_cons_head(r, n, behavior, &head, &entries);
107 __rte_ring_dequeue_elems(r, head, obj_table, esize, n);
108 __rte_ring_hts_update_tail(&r->hts_cons, head, n, 0);
111 if (available != NULL)
112 *available = entries - n;
138 unsigned int esize,
unsigned int n,
unsigned int *free_space)
140 return __rte_ring_do_hts_enqueue_elem(r, obj_table, esize, n,
166 unsigned int esize,
unsigned int n,
unsigned int *available)
168 return __rte_ring_do_hts_dequeue_elem(r, obj_table, esize, n,
194 unsigned int esize,
unsigned int n,
unsigned int *free_space)
196 return __rte_ring_do_hts_enqueue_elem(r, obj_table, esize, n,
224 unsigned int esize,
unsigned int n,
unsigned int *available)
226 return __rte_ring_do_hts_dequeue_elem(r, obj_table, esize, n,
248 unsigned int n,
unsigned int *free_space)
251 sizeof(uintptr_t), n, free_space);
272 unsigned int n,
unsigned int *available)
275 sizeof(uintptr_t), n, available);
296 unsigned int n,
unsigned int *free_space)
299 sizeof(uintptr_t), n, free_space);
322 unsigned int n,
unsigned int *available)
325 sizeof(uintptr_t), n, available);
static __rte_experimental __rte_always_inline unsigned int rte_ring_mp_hts_enqueue_bulk(struct rte_ring *r, void *const *obj_table, unsigned int n, unsigned int *free_space)
#define __rte_always_inline
static __rte_experimental __rte_always_inline unsigned int rte_ring_mp_hts_enqueue_burst_elem(struct rte_ring *r, const void *obj_table, unsigned int esize, unsigned int n, unsigned int *free_space)
static __rte_experimental __rte_always_inline unsigned int rte_ring_mp_hts_enqueue_bulk_elem(struct rte_ring *r, const void *obj_table, unsigned int esize, unsigned int n, unsigned int *free_space)
static __rte_experimental __rte_always_inline unsigned int rte_ring_mp_hts_enqueue_burst(struct rte_ring *r, void *const *obj_table, unsigned int n, unsigned int *free_space)
static __rte_experimental __rte_always_inline unsigned int rte_ring_mc_hts_dequeue_bulk(struct rte_ring *r, void **obj_table, unsigned int n, unsigned int *available)
static __rte_experimental __rte_always_inline unsigned int rte_ring_mc_hts_dequeue_bulk_elem(struct rte_ring *r, void *obj_table, unsigned int esize, unsigned int n, unsigned int *available)
static __rte_experimental __rte_always_inline unsigned int rte_ring_mc_hts_dequeue_burst_elem(struct rte_ring *r, void *obj_table, unsigned int esize, unsigned int n, unsigned int *available)
static __rte_experimental __rte_always_inline unsigned int rte_ring_mc_hts_dequeue_burst(struct rte_ring *r, void **obj_table, unsigned int n, unsigned int *available)