5 #ifndef _RTE_SEQCOUNT_H_ 6 #define _RTE_SEQCOUNT_H_ 28 #include <rte_compat.h> 40 #define RTE_SEQCOUNT_INITIALIZER { .sn = 0 } 105 static inline uint32_t
112 return __atomic_load_n(&seqcount->
sn, __ATOMIC_ACQUIRE);
165 end_sn = __atomic_load_n(&seqcount->
sn, __ATOMIC_RELAXED);
170 return begin_sn != end_sn;
205 sn = seqcount->
sn + 1;
207 __atomic_store_n(&seqcount->
sn, sn, __ATOMIC_RELAXED);
236 sn = seqcount->
sn + 1;
239 __atomic_store_n(&seqcount->
sn, sn, __ATOMIC_RELEASE);
static __rte_experimental void rte_seqcount_init(rte_seqcount_t *seqcount)
static __rte_experimental bool rte_seqcount_read_retry(const rte_seqcount_t *seqcount, uint32_t begin_sn)
static __rte_experimental void rte_seqcount_write_begin(rte_seqcount_t *seqcount)
static __rte_experimental uint32_t rte_seqcount_read_begin(const rte_seqcount_t *seqcount)
static void rte_atomic_thread_fence(int memorder)
static __rte_experimental void rte_seqcount_write_end(rte_seqcount_t *seqcount)