11#ifndef _RTE_RING_C11_PVT_H_
12#define _RTE_RING_C11_PVT_H_
27 uint32_t new_val, uint32_t single, uint32_t enqueue)
37 rte_memory_order_relaxed);
39 rte_atomic_store_explicit(&ht->tail, new_val, rte_memory_order_release);
72 unsigned int is_st,
unsigned int n,
74 uint32_t *old_head, uint32_t *new_head, uint32_t *entries)
80 *old_head = rte_atomic_load_explicit(&d->head,
81 rte_memory_order_relaxed);
92 stail = rte_atomic_load_explicit(&s->tail,
93 rte_memory_order_acquire);
100 *entries = (capacity + stail - *old_head);
110 *new_head = *old_head + n;
116 success = rte_atomic_compare_exchange_strong_explicit(
117 &d->head, old_head, *new_head,
118 rte_memory_order_relaxed,
119 rte_memory_order_relaxed);
static void rte_atomic_thread_fence(rte_memory_order memorder)
#define __rte_always_inline
static __rte_always_inline void rte_wait_until_equal_32(volatile uint32_t *addr, uint32_t expected, rte_memory_order memorder)