| rte_atomic.h(3) | Library Functions Manual | rte_atomic.h(3) |
rte_atomic.h
#include <stdint.h>
#include <rte_common.h>
#include <rte_stdatomic.h>
struct rte_atomic16_t
struct rte_atomic32_t
struct rte_atomic64_t
#define rte_compiler_barrier()
#define RTE_ATOMIC16_INIT(val) { (val) }
#define RTE_ATOMIC32_INIT(val) { (val) }
#define RTE_ATOMIC64_INIT(val) { (val) }
static void rte_atomic_thread_fence (rte_memory_order
memorder)
static int rte_atomic16_cmpset (volatile uint16_t *dst, uint16_t exp,
uint16_t src)
static uint16_t rte_atomic16_exchange (volatile uint16_t *dst, uint16_t
val)
static void rte_atomic16_init (rte_atomic16_t *v)
static int16_t rte_atomic16_read (const rte_atomic16_t *v)
static void rte_atomic16_set (rte_atomic16_t *v, int16_t
new_value)
static void rte_atomic16_add (rte_atomic16_t *v, int16_t inc)
static void rte_atomic16_sub (rte_atomic16_t *v, int16_t dec)
static void rte_atomic16_inc (rte_atomic16_t *v)
static void rte_atomic16_dec (rte_atomic16_t *v)
static int16_t rte_atomic16_add_return (rte_atomic16_t *v,
int16_t inc)
static int16_t rte_atomic16_sub_return (rte_atomic16_t *v,
int16_t dec)
static int rte_atomic16_inc_and_test (rte_atomic16_t *v)
static int rte_atomic16_dec_and_test (rte_atomic16_t *v)
static int rte_atomic16_test_and_set (rte_atomic16_t *v)
static void rte_atomic16_clear (rte_atomic16_t *v)
static int rte_atomic32_cmpset (volatile uint32_t *dst, uint32_t exp,
uint32_t src)
static uint32_t rte_atomic32_exchange (volatile uint32_t *dst, uint32_t
val)
static void rte_atomic32_init (rte_atomic32_t *v)
static int32_t rte_atomic32_read (const rte_atomic32_t *v)
static void rte_atomic32_set (rte_atomic32_t *v, int32_t
new_value)
static void rte_atomic32_add (rte_atomic32_t *v, int32_t inc)
static void rte_atomic32_sub (rte_atomic32_t *v, int32_t dec)
static void rte_atomic32_inc (rte_atomic32_t *v)
static void rte_atomic32_dec (rte_atomic32_t *v)
static int32_t rte_atomic32_add_return (rte_atomic32_t *v,
int32_t inc)
static int32_t rte_atomic32_sub_return (rte_atomic32_t *v,
int32_t dec)
static int rte_atomic32_inc_and_test (rte_atomic32_t *v)
static int rte_atomic32_dec_and_test (rte_atomic32_t *v)
static int rte_atomic32_test_and_set (rte_atomic32_t *v)
static void rte_atomic32_clear (rte_atomic32_t *v)
static int rte_atomic64_cmpset (volatile uint64_t *dst, uint64_t exp,
uint64_t src)
static uint64_t rte_atomic64_exchange (volatile uint64_t *dst, uint64_t
val)
static void rte_atomic64_init (rte_atomic64_t *v)
static int64_t rte_atomic64_read (rte_atomic64_t *v)
static void rte_atomic64_set (rte_atomic64_t *v, int64_t
new_value)
static void rte_atomic64_add (rte_atomic64_t *v, int64_t inc)
static void rte_atomic64_sub (rte_atomic64_t *v, int64_t dec)
static void rte_atomic64_inc (rte_atomic64_t *v)
static void rte_atomic64_dec (rte_atomic64_t *v)
static int64_t rte_atomic64_add_return (rte_atomic64_t *v,
int64_t inc)
static int64_t rte_atomic64_sub_return (rte_atomic64_t *v,
int64_t dec)
static int rte_atomic64_inc_and_test (rte_atomic64_t *v)
static int rte_atomic64_dec_and_test (rte_atomic64_t *v)
static int rte_atomic64_test_and_set (rte_atomic64_t *v)
static void rte_atomic64_clear (rte_atomic64_t *v)
struct __rte_aligned (16)
static 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)
Memory Barrier
static void rte_mb (void)
static void rte_wmb (void)
static void rte_rmb (void)
SMP Memory Barrier
static void rte_smp_mb (void)
static void rte_smp_wmb (void)
static void rte_smp_rmb (void)
I/O Memory Barrier
static void rte_io_mb (void)
static void rte_io_wmb (void)
static void rte_io_rmb (void)
Atomic Operations
This file defines a generic API for atomic operations.
Definition in file rte_atomic.h.
Value:.PP
do { \
asm volatile ("" : : : "memory"); \ } while(0)
Compiler barrier.
Guarantees that operation reordering does not occur at compile time for operations directly before and after the barrier.
Definition at line 157 of file rte_atomic.h.
Static initializer for an atomic counter.
Definition at line 234 of file rte_atomic.h.
Static initializer for an atomic counter.
Definition at line 519 of file rte_atomic.h.
Static initializer for an atomic counter.
Definition at line 803 of file rte_atomic.h.
General memory barrier.
Guarantees that the LOAD and STORE operations generated before the barrier occur before the LOAD and STORE operations generated after.
Write memory barrier.
Guarantees that the STORE operations generated before the barrier occur before the STORE operations generated after.
Read memory barrier.
Guarantees that the LOAD operations generated before the barrier occur before the LOAD operations generated after.
General memory barrier between lcores
Guarantees that the LOAD and STORE operations that precede the rte_smp_mb() call are globally visible across the lcores before the LOAD and STORE operations that follows it.
Note
rte_atomic_thread_fence(rte_memory_order_acq_rel) should be used instead.
Write memory barrier between lcores
Guarantees that the STORE operations that precede the rte_smp_wmb() call are globally visible across the lcores before the STORE operations that follows it.
Note
rte_atomic_thread_fence(rte_memory_order_release) should be used instead. The fence also guarantees LOAD operations that precede the call are globally visible across the lcores before the STORE operations that follows it.
Read memory barrier between lcores
Guarantees that the LOAD operations that precede the rte_smp_rmb() call are globally visible across the lcores before the LOAD operations that follows it.
Note
rte_atomic_thread_fence(rte_memory_order_acquire) should be used instead. The fence also guarantees LOAD operations that precede the call are globally visible across the lcores before the STORE operations that follows it.
General memory barrier for I/O device
Guarantees that the LOAD and STORE operations that precede the rte_io_mb() call are visible to I/O device or CPU before the LOAD and STORE operations that follow it.
Write memory barrier for I/O device
Guarantees that the STORE operations that precede the rte_io_wmb() call are visible to I/O device before the STORE operations that follow it.
Read memory barrier for IO device
Guarantees that the LOAD operations on I/O device that precede the rte_io_rmb() call are visible to CPU before the LOAD operations that follow it.
Synchronization fence between threads based on the specified memory order.
Atomic compare and set.
(atomic) equivalent to: if (*dst == exp) *dst = src (all 16-bit words)
Parameters
Returns
Atomic exchange.
(atomic) equivalent to: ret = *dst *dst = val; return ret;
Parameters
Returns
Initialize an atomic counter.
Parameters
Definition at line 243 of file rte_atomic.h.
Atomically read a 16-bit value from a counter.
Parameters
Returns
Definition at line 257 of file rte_atomic.h.
Atomically set a counter to a 16-bit value.
Parameters
Definition at line 271 of file rte_atomic.h.
Atomically add a 16-bit value to an atomic counter.
Parameters
Definition at line 285 of file rte_atomic.h.
Atomically subtract a 16-bit value from an atomic counter.
Parameters
Definition at line 300 of file rte_atomic.h.
Atomically increment a counter by one.
Parameters
Atomically decrement a counter by one.
Parameters
Atomically add a 16-bit value to a counter and return the result.
Atomically adds the 16-bits value (inc) to the atomic counter (v) and returns the value of v after addition.
Parameters
Returns
Definition at line 354 of file rte_atomic.h.
Atomically subtract a 16-bit value from a counter and return the result.
Atomically subtracts the 16-bit value (inc) from the atomic counter (v) and returns the value of v after the subtraction.
Parameters
Returns
Definition at line 375 of file rte_atomic.h.
Atomically increment a 16-bit counter by one and test.
Atomically increments the atomic counter (v) by one and returns true if the result is 0, or false in all other cases.
Parameters
Returns
Atomically decrement a 16-bit counter by one and test.
Atomically decrements the atomic counter (v) by one and returns true if the result is 0, or false in all other cases.
Parameters
Returns
Atomically test and set a 16-bit atomic counter.
If the counter value is already set, return 0 (failed). Otherwise, set the counter value to 1 and return 1 (success).
Parameters
Returns
Atomically set a 16-bit counter to 0.
Parameters
Definition at line 449 of file rte_atomic.h.
Atomic compare and set.
(atomic) equivalent to: if (*dst == exp) *dst = src (all 32-bit words)
Parameters
Returns
Atomic exchange.
(atomic) equivalent to: ret = *dst *dst = val; return ret;
Parameters
Returns
Initialize an atomic counter.
Parameters
Definition at line 528 of file rte_atomic.h.
Atomically read a 32-bit value from a counter.
Parameters
Returns
Definition at line 542 of file rte_atomic.h.
Atomically set a counter to a 32-bit value.
Parameters
Definition at line 556 of file rte_atomic.h.
Atomically add a 32-bit value to an atomic counter.
Parameters
Definition at line 570 of file rte_atomic.h.
Atomically subtract a 32-bit value from an atomic counter.
Parameters
Definition at line 585 of file rte_atomic.h.
Atomically increment a counter by one.
Parameters
Atomically decrement a counter by one.
Parameters
Atomically add a 32-bit value to a counter and return the result.
Atomically adds the 32-bits value (inc) to the atomic counter (v) and returns the value of v after addition.
Parameters
Returns
Definition at line 639 of file rte_atomic.h.
Atomically subtract a 32-bit value from a counter and return the result.
Atomically subtracts the 32-bit value (inc) from the atomic counter (v) and returns the value of v after the subtraction.
Parameters
Returns
Definition at line 660 of file rte_atomic.h.
Atomically increment a 32-bit counter by one and test.
Atomically increments the atomic counter (v) by one and returns true if the result is 0, or false in all other cases.
Parameters
Returns
Atomically decrement a 32-bit counter by one and test.
Atomically decrements the atomic counter (v) by one and returns true if the result is 0, or false in all other cases.
Parameters
Returns
Atomically test and set a 32-bit atomic counter.
If the counter value is already set, return 0 (failed). Otherwise, set the counter value to 1 and return 1 (success).
Parameters
Returns
Atomically set a 32-bit counter to 0.
Parameters
Definition at line 734 of file rte_atomic.h.
An atomic compare and set function used by the mutex functions. (atomic) equivalent to: if (*dst == exp) *dst = src (all 64-bit words)
Parameters
Returns
Atomic exchange.
(atomic) equivalent to: ret = *dst *dst = val; return ret;
Parameters
Returns
Initialize the atomic counter.
Parameters
Atomically read a 64-bit counter.
Parameters
Returns
Atomically set a 64-bit counter.
Parameters
Atomically add a 64-bit value to a counter.
Parameters
Atomically subtract a 64-bit value from a counter.
Parameters
Atomically increment a 64-bit counter by one and test.
Parameters
Atomically decrement a 64-bit counter by one and test.
Parameters
Add a 64-bit value to an atomic counter and return the result.
Atomically adds the 64-bit value (inc) to the atomic counter (v) and returns the value of v after the addition.
Parameters
Returns
Subtract a 64-bit value from an atomic counter and return the result.
Atomically subtracts the 64-bit value (dec) from the atomic counter (v) and returns the value of v after the subtraction.
Parameters
Returns
Atomically increment a 64-bit counter by one and test.
Atomically increments the atomic counter (v) by one and returns true if the result is 0, or false in all other cases.
Parameters
Returns
Atomically decrement a 64-bit counter by one and test.
Atomically decrements the atomic counter (v) by one and returns true if the result is 0, or false in all other cases.
Parameters
Returns
Atomically test and set a 64-bit atomic counter.
If the counter value is already set, return 0 (failed). Otherwise, set the counter value to 1 and return 1 (success).
Parameters
Returns
Atomically set a 64-bit counter to 0.
Parameters
128-bit integer structure.
Definition at line 1085 of file rte_atomic.h.
An atomic compare and set function used by the mutex functions. (Atomically) Equivalent to:
if (*dst == *exp)
*dst = *src else
*exp = *dst
Note
The success and failure arguments must be one of the __ATOMIC_* values defined in the C++11 standard. For details on their behavior, refer to the standard.
Parameters
Returns
Generated automatically by Doxygen for DPDK from the source code.
| Version 24.11.3 | DPDK |