29 static inline void rte_mb(
void);
37 static inline void rte_wmb(
void);
45 static inline void rte_rmb(
void);
118 #define rte_compiler_barrier() do { \ 119 asm volatile ("" : : : "memory"); \ 148 #ifdef RTE_FORCE_INTRINSICS 152 return __sync_bool_compare_and_swap(dst, exp, src);
171 static inline uint16_t
174 #ifdef RTE_FORCE_INTRINSICS 175 static inline uint16_t
178 return __atomic_exchange_n(dst, val, __ATOMIC_SEQ_CST);
192 #define RTE_ATOMIC16_INIT(val) { (val) } 214 static inline int16_t
245 __sync_fetch_and_add(&v->
cnt, inc);
259 __sync_fetch_and_sub(&v->
cnt, dec);
271 #ifdef RTE_FORCE_INTRINSICS 288 #ifdef RTE_FORCE_INTRINSICS 309 static inline int16_t
312 return __sync_add_and_fetch(&v->
cnt, inc);
329 static inline int16_t
332 return __sync_sub_and_fetch(&v->
cnt, dec);
348 #ifdef RTE_FORCE_INTRINSICS 351 return __sync_add_and_fetch(&v->
cnt, 1) == 0;
368 #ifdef RTE_FORCE_INTRINSICS 371 return __sync_sub_and_fetch(&v->
cnt, 1) == 0;
388 #ifdef RTE_FORCE_INTRINSICS 427 #ifdef RTE_FORCE_INTRINSICS 431 return __sync_bool_compare_and_swap(dst, exp, src);
450 static inline uint32_t
453 #ifdef RTE_FORCE_INTRINSICS 454 static inline uint32_t
457 return __atomic_exchange_n(dst, val, __ATOMIC_SEQ_CST);
471 #define RTE_ATOMIC32_INIT(val) { (val) } 493 static inline int32_t
524 __sync_fetch_and_add(&v->
cnt, inc);
538 __sync_fetch_and_sub(&v->
cnt, dec);
550 #ifdef RTE_FORCE_INTRINSICS 567 #ifdef RTE_FORCE_INTRINSICS 588 static inline int32_t
591 return __sync_add_and_fetch(&v->
cnt, inc);
608 static inline int32_t
611 return __sync_sub_and_fetch(&v->
cnt, dec);
627 #ifdef RTE_FORCE_INTRINSICS 630 return __sync_add_and_fetch(&v->
cnt, 1) == 0;
647 #ifdef RTE_FORCE_INTRINSICS 650 return __sync_sub_and_fetch(&v->
cnt, 1) == 0;
667 #ifdef RTE_FORCE_INTRINSICS 705 #ifdef RTE_FORCE_INTRINSICS 709 return __sync_bool_compare_and_swap(dst, exp, src);
728 static inline uint64_t
731 #ifdef RTE_FORCE_INTRINSICS 732 static inline uint64_t
735 return __atomic_exchange_n(dst, val, __ATOMIC_SEQ_CST);
749 #define RTE_ATOMIC64_INIT(val) { (val) } 760 #ifdef RTE_FORCE_INTRINSICS 770 while (success == 0) {
787 static inline int64_t
790 #ifdef RTE_FORCE_INTRINSICS 791 static inline int64_t
800 while (success == 0) {
822 #ifdef RTE_FORCE_INTRINSICS 832 while (success == 0) {
852 #ifdef RTE_FORCE_INTRINSICS 856 __sync_fetch_and_add(&v->
cnt, inc);
871 #ifdef RTE_FORCE_INTRINSICS 875 __sync_fetch_and_sub(&v->
cnt, dec);
888 #ifdef RTE_FORCE_INTRINSICS 905 #ifdef RTE_FORCE_INTRINSICS 926 static inline int64_t
929 #ifdef RTE_FORCE_INTRINSICS 930 static inline int64_t
933 return __sync_add_and_fetch(&v->
cnt, inc);
950 static inline int64_t
953 #ifdef RTE_FORCE_INTRINSICS 954 static inline int64_t
957 return __sync_sub_and_fetch(&v->
cnt, dec);
974 #ifdef RTE_FORCE_INTRINSICS 994 #ifdef RTE_FORCE_INTRINSICS 1014 #ifdef RTE_FORCE_INTRINSICS 1029 #ifdef RTE_FORCE_INTRINSICS 1047 __extension__ __int128 int128;
1097 const rte_int128_t *src,
static void rte_atomic32_inc(rte_atomic32_t *v)
static int64_t rte_atomic64_sub_return(rte_atomic64_t *v, int64_t dec)
static void rte_smp_rmb(void)
static int rte_atomic32_cmpset(volatile uint32_t *dst, uint32_t exp, uint32_t src)
static int16_t rte_atomic16_read(const rte_atomic16_t *v)
static void rte_wmb(void)
static void rte_atomic32_add(rte_atomic32_t *v, int32_t inc)
static int rte_atomic16_dec_and_test(rte_atomic16_t *v)
static int64_t rte_atomic64_read(rte_atomic64_t *v)
static int16_t rte_atomic16_sub_return(rte_atomic16_t *v, int16_t dec)
static void rte_atomic32_sub(rte_atomic32_t *v, int32_t dec)
static void rte_atomic32_dec(rte_atomic32_t *v)
static int rte_atomic32_inc_and_test(rte_atomic32_t *v)
static void rte_io_mb(void)
static void rte_atomic64_inc(rte_atomic64_t *v)
static void rte_atomic32_set(rte_atomic32_t *v, int32_t new_value)
static int32_t rte_atomic32_add_return(rte_atomic32_t *v, int32_t inc)
static void rte_atomic16_add(rte_atomic16_t *v, int16_t inc)
static void rte_atomic32_init(rte_atomic32_t *v)
static void rte_atomic16_clear(rte_atomic16_t *v)
static int rte_atomic16_test_and_set(rte_atomic16_t *v)
static int rte_atomic64_cmpset(volatile uint64_t *dst, uint64_t exp, uint64_t src)
static void rte_atomic16_sub(rte_atomic16_t *v, int16_t dec)
static void rte_atomic16_set(rte_atomic16_t *v, int16_t new_value)
static void rte_io_wmb(void)
static void rte_atomic64_clear(rte_atomic64_t *v)
static int16_t rte_atomic16_add_return(rte_atomic16_t *v, int16_t inc)
static int rte_atomic64_dec_and_test(rte_atomic64_t *v)
static void rte_smp_wmb(void)
static int64_t rte_atomic64_add_return(rte_atomic64_t *v, int64_t inc)
static void rte_rmb(void)
static void rte_atomic32_clear(rte_atomic32_t *v)
static void rte_atomic16_inc(rte_atomic16_t *v)
static int rte_atomic16_inc_and_test(rte_atomic16_t *v)
static void rte_atomic_thread_fence(int memorder)
static int rte_atomic16_cmpset(volatile uint16_t *dst, uint16_t exp, uint16_t src)
static int rte_atomic64_inc_and_test(rte_atomic64_t *v)
static int32_t rte_atomic32_sub_return(rte_atomic32_t *v, int32_t dec)
static void rte_atomic64_sub(rte_atomic64_t *v, int64_t dec)
static uint16_t rte_atomic16_exchange(volatile uint16_t *dst, uint16_t val)
static int rte_atomic32_test_and_set(rte_atomic32_t *v)
static void rte_smp_mb(void)
rte_iova_t buf_iova __rte_aligned(sizeof(rte_iova_t))
static uint32_t rte_atomic32_exchange(volatile uint32_t *dst, uint32_t val)
static void rte_atomic16_dec(rte_atomic16_t *v)
static void rte_atomic64_init(rte_atomic64_t *v)
static void rte_atomic64_dec(rte_atomic64_t *v)
static void rte_atomic16_init(rte_atomic16_t *v)
static int rte_atomic64_test_and_set(rte_atomic64_t *v)
static uint64_t rte_atomic64_exchange(volatile uint64_t *dst, uint64_t val)
static int32_t rte_atomic32_read(const rte_atomic32_t *v)
static __rte_experimental int rte_atomic128_cmp_exchange(rte_int128_t *dst, rte_int128_t *exp, const rte_int128_t *src, unsigned int weak, int success, int failure)
static void rte_atomic64_set(rte_atomic64_t *v, int64_t new_value)
static int rte_atomic32_dec_and_test(rte_atomic32_t *v)
static void rte_atomic64_add(rte_atomic64_t *v, int64_t inc)
static void rte_io_rmb(void)