10 #ifndef _RTE_RING_RTS_H_
11 #define _RTE_RING_RTS_H_
84 __rte_ring_do_rts_enqueue_elem(
struct rte_ring *r,
const void *obj_table,
90 n = __rte_ring_rts_move_prod_head(r, n, behavior, &head, &free);
93 __rte_ring_enqueue_elems(r, head, obj_table, esize, n);
94 __rte_ring_rts_update_tail(&r->rts_prod);
97 if (free_space != NULL)
98 *free_space = free - n;
125 __rte_ring_do_rts_dequeue_elem(
struct rte_ring *r,
void *obj_table,
129 uint32_t entries, head;
131 n = __rte_ring_rts_move_cons_head(r, n, behavior, &head, &entries);
134 __rte_ring_dequeue_elems(r, head, obj_table, esize, n);
135 __rte_ring_rts_update_tail(&r->rts_cons);
138 if (available != NULL)
139 *available = entries - n;
165 unsigned int esize,
unsigned int n,
unsigned int *free_space)
167 return __rte_ring_do_rts_enqueue_elem(r, obj_table, esize, n,
193 unsigned int esize,
unsigned int n,
unsigned int *available)
195 return __rte_ring_do_rts_dequeue_elem(r, obj_table, esize, n,
221 unsigned int esize,
unsigned int n,
unsigned int *free_space)
223 return __rte_ring_do_rts_enqueue_elem(r, obj_table, esize, n,
251 unsigned int esize,
unsigned int n,
unsigned int *available)
253 return __rte_ring_do_rts_dequeue_elem(r, obj_table, esize, n,
275 unsigned int n,
unsigned int *free_space)
278 sizeof(uintptr_t), n, free_space);
299 unsigned int n,
unsigned int *available)
302 sizeof(uintptr_t), n, available);
323 unsigned int n,
unsigned int *free_space)
326 sizeof(uintptr_t), n, free_space);
349 unsigned int n,
unsigned int *available)
352 sizeof(uintptr_t), n, available);
365 static inline uint32_t
368 if (r->prod.
sync_type == RTE_RING_SYNC_MT_RTS)
369 return r->rts_prod.htd_max;
388 if (r->prod.
sync_type != RTE_RING_SYNC_MT_RTS)
391 r->rts_prod.htd_max = v;
405 static inline uint32_t
408 if (r->cons.
sync_type == RTE_RING_SYNC_MT_RTS)
409 return r->rts_cons.htd_max;
428 if (r->cons.
sync_type != RTE_RING_SYNC_MT_RTS)
431 r->rts_cons.htd_max = v;