staticvoidrte_mb(void)[inline],[static]
General memory barrier.
Guarantees that the LOAD and STORE operations generated before the barrier occur before the LOAD and
STORE operations generated after.
staticvoidrte_wmb(void)[inline],[static]
Write memory barrier.
Guarantees that the STORE operations generated before the barrier occur before the STORE operations
generated after.
staticvoidrte_rmb(void)[inline],[static]
Read memory barrier.
Guarantees that the LOAD operations generated before the barrier occur before the LOAD operations
generated after.
staticvoidrte_smp_mb(void)[inline],[static]
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
This function is deprecated. It provides similar synchronization primitive as atomic fence, but has
different syntax and memory ordering semantic. Hence deprecated for the simplicity of memory ordering
semantics in use.
rte_atomic_thread_fence(rte_memory_order_acq_rel) should be used instead.
staticvoidrte_smp_wmb(void)[inline],[static]
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
This function is deprecated. It provides similar synchronization primitive as atomic fence, but has
different syntax and memory ordering semantic. Hence deprecated for the simplicity of memory ordering
semantics in use.
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.
staticvoidrte_smp_rmb(void)[inline],[static]
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
This function is deprecated. It provides similar synchronization primitive as atomic fence, but has
different syntax and memory ordering semantic. Hence deprecated for the simplicity of memory ordering
semantics in use.
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.
staticvoidrte_io_mb(void)[inline],[static]
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.
staticvoidrte_io_wmb(void)[inline],[static]
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.
staticvoidrte_io_rmb(void)[inline],[static]
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.
staticvoidrte_atomic_thread_fence(rte_memory_ordermemorder)[inline],[static]
Synchronization fence between threads based on the specified memory order.
staticintrte_atomic16_cmpset(volatileuint16_t*dst,uint16_texp,uint16_tsrc)[inline],[static]
Atomic compare and set.
(atomic) equivalent to: if (*dst == exp) *dst = src (all 16-bit words)
Parametersdst The destination location into which the value will be written.
exp The expected value.
src The new value.
Returns
Non-zero on success; 0 on failure.
staticuint16_trte_atomic16_exchange(volatileuint16_t*dst,uint16_tval)[inline],[static]
Atomic exchange.
(atomic) equivalent to: ret = *dst *dst = val; return ret;
Parametersdst The destination location into which the value will be written.
val The new value.
Returns
The original value at that location
staticvoidrte_atomic16_init(rte_atomic16_t*v)[inline],[static]
Initialize an atomic counter.
Parametersv A pointer to the atomic counter.
Definition at line 243 of file rte_atomic.h.
staticint16_trte_atomic16_read(constrte_atomic16_t*v)[inline],[static]
Atomically read a 16-bit value from a counter.
Parametersv A pointer to the atomic counter.
Returns
The value of the counter.
Definition at line 257 of file rte_atomic.h.
staticvoidrte_atomic16_set(rte_atomic16_t*v,int16_tnew_value)[inline],[static]
Atomically set a counter to a 16-bit value.
Parametersv A pointer to the atomic counter.
new_value The new value for the counter.
Definition at line 271 of file rte_atomic.h.
staticvoidrte_atomic16_add(rte_atomic16_t*v,int16_tinc)[inline],[static]
Atomically add a 16-bit value to an atomic counter.
Parametersv A pointer to the atomic counter.
inc The value to be added to the counter.
Definition at line 285 of file rte_atomic.h.
staticvoidrte_atomic16_sub(rte_atomic16_t*v,int16_tdec)[inline],[static]
Atomically subtract a 16-bit value from an atomic counter.
Parametersv A pointer to the atomic counter.
dec The value to be subtracted from the counter.
Definition at line 300 of file rte_atomic.h.
staticvoidrte_atomic16_inc(rte_atomic16_t*v)[inline],[static]
Atomically increment a counter by one.
Parametersv A pointer to the atomic counter.
staticvoidrte_atomic16_dec(rte_atomic16_t*v)[inline],[static]
Atomically decrement a counter by one.
Parametersv A pointer to the atomic counter.
staticint16_trte_atomic16_add_return(rte_atomic16_t*v,int16_tinc)[inline],[static]
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.
Parametersv A pointer to the atomic counter.
inc The value to be added to the counter.
Returns
The value of v after the addition.
Definition at line 354 of file rte_atomic.h.
staticint16_trte_atomic16_sub_return(rte_atomic16_t*v,int16_tdec)[inline],[static]
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.
Parametersv A pointer to the atomic counter.
dec The value to be subtracted from the counter.
Returns
The value of v after the subtraction.
Definition at line 375 of file rte_atomic.h.
staticintrte_atomic16_inc_and_test(rte_atomic16_t*v)[inline],[static]
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.
Parametersv A pointer to the atomic counter.
Returns
True if the result after the increment operation is 0; false otherwise.
staticintrte_atomic16_dec_and_test(rte_atomic16_t*v)[inline],[static]
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.
Parametersv A pointer to the atomic counter.
Returns
True if the result after the decrement operation is 0; false otherwise.
staticintrte_atomic16_test_and_set(rte_atomic16_t*v)[inline],[static]
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).
Parametersv A pointer to the atomic counter.
Returns
0 if failed; else 1, success.
staticvoidrte_atomic16_clear(rte_atomic16_t*v)[inline],[static]
Atomically set a 16-bit counter to 0.
Parametersv A pointer to the atomic counter.
Definition at line 449 of file rte_atomic.h.
staticintrte_atomic32_cmpset(volatileuint32_t*dst,uint32_texp,uint32_tsrc)[inline],[static]
Atomic compare and set.
(atomic) equivalent to: if (*dst == exp) *dst = src (all 32-bit words)
Parametersdst The destination location into which the value will be written.
exp The expected value.
src The new value.
Returns
Non-zero on success; 0 on failure.
staticuint32_trte_atomic32_exchange(volatileuint32_t*dst,uint32_tval)[inline],[static]
Atomic exchange.
(atomic) equivalent to: ret = *dst *dst = val; return ret;
Parametersdst The destination location into which the value will be written.
val The new value.
Returns
The original value at that location
staticvoidrte_atomic32_init(rte_atomic32_t*v)[inline],[static]
Initialize an atomic counter.
Parametersv A pointer to the atomic counter.
Definition at line 528 of file rte_atomic.h.
staticint32_trte_atomic32_read(constrte_atomic32_t*v)[inline],[static]
Atomically read a 32-bit value from a counter.
Parametersv A pointer to the atomic counter.
Returns
The value of the counter.
Definition at line 542 of file rte_atomic.h.
staticvoidrte_atomic32_set(rte_atomic32_t*v,int32_tnew_value)[inline],[static]
Atomically set a counter to a 32-bit value.
Parametersv A pointer to the atomic counter.
new_value The new value for the counter.
Definition at line 556 of file rte_atomic.h.
staticvoidrte_atomic32_add(rte_atomic32_t*v,int32_tinc)[inline],[static]
Atomically add a 32-bit value to an atomic counter.
Parametersv A pointer to the atomic counter.
inc The value to be added to the counter.
Definition at line 570 of file rte_atomic.h.
staticvoidrte_atomic32_sub(rte_atomic32_t*v,int32_tdec)[inline],[static]
Atomically subtract a 32-bit value from an atomic counter.
Parametersv A pointer to the atomic counter.
dec The value to be subtracted from the counter.
Definition at line 585 of file rte_atomic.h.
staticvoidrte_atomic32_inc(rte_atomic32_t*v)[inline],[static]
Atomically increment a counter by one.
Parametersv A pointer to the atomic counter.
staticvoidrte_atomic32_dec(rte_atomic32_t*v)[inline],[static]
Atomically decrement a counter by one.
Parametersv A pointer to the atomic counter.
staticint32_trte_atomic32_add_return(rte_atomic32_t*v,int32_tinc)[inline],[static]
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.
Parametersv A pointer to the atomic counter.
inc The value to be added to the counter.
Returns
The value of v after the addition.
Definition at line 639 of file rte_atomic.h.
staticint32_trte_atomic32_sub_return(rte_atomic32_t*v,int32_tdec)[inline],[static]
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.
Parametersv A pointer to the atomic counter.
dec The value to be subtracted from the counter.
Returns
The value of v after the subtraction.
Definition at line 660 of file rte_atomic.h.
staticintrte_atomic32_inc_and_test(rte_atomic32_t*v)[inline],[static]
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.
Parametersv A pointer to the atomic counter.
Returns
True if the result after the increment operation is 0; false otherwise.
staticintrte_atomic32_dec_and_test(rte_atomic32_t*v)[inline],[static]
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.
Parametersv A pointer to the atomic counter.
Returns
True if the result after the decrement operation is 0; false otherwise.
staticintrte_atomic32_test_and_set(rte_atomic32_t*v)[inline],[static]
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).
Parametersv A pointer to the atomic counter.
Returns
0 if failed; else 1, success.
staticvoidrte_atomic32_clear(rte_atomic32_t*v)[inline],[static]
Atomically set a 32-bit counter to 0.
Parametersv A pointer to the atomic counter.
Definition at line 734 of file rte_atomic.h.
staticintrte_atomic64_cmpset(volatileuint64_t*dst,uint64_texp,uint64_tsrc)[inline],[static]
An atomic compare and set function used by the mutex functions. (atomic) equivalent to: if (*dst == exp)
*dst = src (all 64-bit words)
Parametersdst The destination into which the value will be written.
exp The expected value.
src The new value.
Returns
Non-zero on success; 0 on failure.
staticuint64_trte_atomic64_exchange(volatileuint64_t*dst,uint64_tval)[inline],[static]
Atomic exchange.
(atomic) equivalent to: ret = *dst *dst = val; return ret;
Parametersdst The destination location into which the value will be written.
val The new value.
Returns
The original value at that location
staticvoidrte_atomic64_init(rte_atomic64_t*v)[inline],[static]
Initialize the atomic counter.
Parametersv A pointer to the atomic counter.
staticint64_trte_atomic64_read(rte_atomic64_t*v)[inline],[static]
Atomically read a 64-bit counter.
Parametersv A pointer to the atomic counter.
Returns
The value of the counter.
staticvoidrte_atomic64_set(rte_atomic64_t*v,int64_tnew_value)[inline],[static]
Atomically set a 64-bit counter.
Parametersv A pointer to the atomic counter.
new_value The new value of the counter.
staticvoidrte_atomic64_add(rte_atomic64_t*v,int64_tinc)[inline],[static]
Atomically add a 64-bit value to a counter.
Parametersv A pointer to the atomic counter.
inc The value to be added to the counter.
staticvoidrte_atomic64_sub(rte_atomic64_t*v,int64_tdec)[inline],[static]
Atomically subtract a 64-bit value from a counter.
Parametersv A pointer to the atomic counter.
dec The value to be subtracted from the counter.
staticvoidrte_atomic64_inc(rte_atomic64_t*v)[inline],[static]
Atomically increment a 64-bit counter by one and test.
Parametersv A pointer to the atomic counter.
staticvoidrte_atomic64_dec(rte_atomic64_t*v)[inline],[static]
Atomically decrement a 64-bit counter by one and test.
Parametersv A pointer to the atomic counter.
staticint64_trte_atomic64_add_return(rte_atomic64_t*v,int64_tinc)[inline],[static]
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.
Parametersv A pointer to the atomic counter.
inc The value to be added to the counter.
Returns
The value of v after the addition.
staticint64_trte_atomic64_sub_return(rte_atomic64_t*v,int64_tdec)[inline],[static]
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.
Parametersv A pointer to the atomic counter.
dec The value to be subtracted from the counter.
Returns
The value of v after the subtraction.
staticintrte_atomic64_inc_and_test(rte_atomic64_t*v)[inline],[static]
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.
Parametersv A pointer to the atomic counter.
Returns
True if the result after the addition is 0; false otherwise.
staticintrte_atomic64_dec_and_test(rte_atomic64_t*v)[inline],[static]
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.
Parametersv A pointer to the atomic counter.
Returns
True if the result after subtraction is 0; false otherwise.
staticintrte_atomic64_test_and_set(rte_atomic64_t*v)[inline],[static]
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).
Parametersv A pointer to the atomic counter.
Returns
0 if failed; else 1, success.
staticvoidrte_atomic64_clear(rte_atomic64_t*v)[inline],[static]
Atomically set a 64-bit counter to 0.
Parametersv A pointer to the atomic counter.
struct__rte_aligned(16)
128-bit integer structure.
Definition at line 1085 of file rte_atomic.h.
staticintrte_atomic128_cmp_exchange(rte_int128_t*dst,rte_int128_t*exp,constrte_int128_t*src,unsignedintweak,intsuccess,intfailure)[inline],[static]
An atomic compare and set function used by the mutex functions. (Atomically) Equivalent to:
if (*dst == *exp)
*dst = *src
else
*exp = *dst
Note
This function is currently available for the x86-64 and aarch64 platforms.
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.
Parametersdst The destination into which the value will be written.
exp Pointer to the expected value. If the operation fails, this memory is updated with the actual
value.
src Pointer to the new value.
weak A value of true allows the comparison to spuriously fail and allows the 'exp' update to occur
non-atomically (i.e. a torn read may occur). Implementations may ignore this argument and only
implement the strong variant.
success If successful, the operation's memory behavior conforms to this (or a stronger) model.
failure If unsuccessful, the operation's memory behavior conforms to this (or a stronger) model. This
argument cannot be rte_memory_order_release, rte_memory_order_acq_rel, or a stronger model than
success.
Returns
Non-zero on success; 0 on failure.