|
NAMErte_bitops.h SYNOPSIS#include <stdint.h>
Macros#define RTE_BIT64(nr) (UINT64_C(1) << (nr))
Functionsstatic uint32_t rte_bit_relaxed_get32 (unsigned int nr,
volatile uint32_t *addr)
Detailed DescriptionBit Operations This file provides functionality for low-level, single-word arithmetic and bit-level operations, such as counting or setting individual bits. Definition in file rte_bitops.h. Macro Definition Documentation#define RTE_BIT64(nr) (UINT64_C(1) << (nr))Get the uint64_t value for a specified bit set. Parameters nr The bit number in range of 0 to 63.
Definition at line 36 of file rte_bitops.h. #define RTE_BIT32(nr) (UINT32_C(1) << (nr))Get the uint32_t value for a specified bit set. Parameters nr The bit number in range of 0 to 31.
Definition at line 44 of file rte_bitops.h. #define RTE_SHIFT_VAL32(val, nr) (UINT32_C(val) << (nr))Get the uint32_t shifted value. Parameters val The value to be shifted.
nr The shift number in range of 0 to (32 - width of val). Definition at line 54 of file rte_bitops.h. #define RTE_SHIFT_VAL64(val, nr) (UINT64_C(val) << (nr))Get the uint64_t shifted value. Parameters val The value to be shifted.
nr The shift number in range of 0 to (64 - width of val). Definition at line 64 of file rte_bitops.h. #define RTE_GENMASK32(high, low) (((~UINT32_C(0)) << (low)) & (~UINT32_C(0) >> (31u - (high))))Generate a contiguous 32-bit mask starting at bit position low and ending at position high. Parameters high High bit position.
low Low bit position. Definition at line 75 of file rte_bitops.h. #define RTE_GENMASK64(high, low) (((~UINT64_C(0)) << (low)) & (~UINT64_C(0) >> (63u - (high))))Generate a contiguous 64-bit mask starting at bit position low and ending at position high. Parameters high High bit position.
low Low bit position. Definition at line 87 of file rte_bitops.h. #define RTE_FIELD_GET32(mask, reg) ((typeof(mask))(((reg) & (mask)) >> rte_ctz32(mask)))Extract a 32-bit field element. Parameters mask Shifted mask.
reg Value of entire bitfield. Definition at line 98 of file rte_bitops.h. #define RTE_FIELD_GET64(mask, reg) ((typeof(mask))(((reg) & (mask)) >> rte_ctz64(mask)))Extract a 64-bit field element. Parameters mask Shifted mask.
reg Value of entire bitfield. Definition at line 109 of file rte_bitops.h. #define rte_bit_test(addr, nr)Value:.PP
Warning EXPERIMENTAL: this API may change without prior
notice.
Test bit in word. Generic selection macro to test the value of a bit in a 32-bit or 64-bit word. The type of operation depends on the type of the addr parameter. This macro does not give any guarantees in regards to memory ordering or atomicity. Parameters addr A pointer to the word to modify.
nr The index of the bit. Definition at line 130 of file rte_bitops.h. #define rte_bit_set(addr, nr)Value:.PP
Warning EXPERIMENTAL: this API may change without prior
notice.
Set bit in word. Generic selection macro to set a bit in a 32-bit or 64-bit word. The type of operation depends on the type of the addr parameter. This macro does not give any guarantees in regards to memory ordering or atomicity. Parameters addr A pointer to the word to modify.
nr The index of the bit. Definition at line 160 of file rte_bitops.h. #define rte_bit_clear(addr, nr)Value:.PP
Warning EXPERIMENTAL: this API may change without prior
notice.
Clear bit in word. Generic selection macro to clear a bit in a 32-bit or 64-bit word. The type of operation depends on the type of the addr parameter. This macro does not give any guarantees in regards to memory ordering or atomicity. Parameters addr A pointer to the word to modify.
nr The index of the bit. Definition at line 186 of file rte_bitops.h. #define rte_bit_assign(addr, nr, value)Value:.PP
Warning EXPERIMENTAL: this API may change without prior
notice.
Assign a value to a bit in word. Generic selection macro to assign a value to a bit in a 32-bit or 64-bit word. The type of operation depends on the type of the addr parameter. This macro does not give any guarantees in regards to memory ordering or atomicity. Parameters addr A pointer to the word to modify.
nr The index of the bit. value The new value of the bit - true for '1', or false for '0'. Definition at line 213 of file rte_bitops.h. #define rte_bit_flip(addr, nr)Value:.PP
Warning EXPERIMENTAL: this API may change without prior
notice.
Flip a bit in word. Generic selection macro to change the value of a bit to '0' if '1' or '1' if '0' in a 32-bit or 64-bit word. The type of operation depends on the type of the addr parameter. This macro does not give any guarantees in regards to memory ordering or atomicity. Parameters addr A pointer to the word to modify.
nr The index of the bit. Definition at line 239 of file rte_bitops.h. #define rte_bit_atomic_test(addr, nr, memory_order)Value:.PP
Warning EXPERIMENTAL: this API may change without prior
notice.
Test if a particular bit in a word is set with a particular memory order. Test a bit with the resulting memory load ordered as per the specified memory order. Parameters addr A pointer to the word to query.
nr The index of the bit. memory_order The memory order to use. Returns Returns true if the bit is set, and false
otherwise.
Definition at line 266 of file rte_bitops.h. #define rte_bit_atomic_set(addr, nr, memory_order)Value:.PP
Warning EXPERIMENTAL: this API may change without prior
notice.
Atomically set bit in word. Generic selection macro to atomically set bit specified by nr in the word pointed to by addr to '1', with the memory ordering as specified by memory_order. Parameters addr A pointer to the word to modify.
nr The index of the bit. memory_order The memory order to use. Definition at line 295 of file rte_bitops.h. #define rte_bit_atomic_clear(addr, nr, memory_order)Value:.PP
Warning EXPERIMENTAL: this API may change without prior
notice.
Atomically clear bit in word. Generic selection macro to atomically set bit specified by nr in the word pointed to by addr to '0', with the memory ordering as specified by memory_order. Parameters addr A pointer to the word to modify.
nr The index of the bit. memory_order The memory order to use. Definition at line 320 of file rte_bitops.h. #define rte_bit_atomic_assign(addr, nr, value, memory_order)Value:.PP
Warning EXPERIMENTAL: this API may change without prior
notice.
Atomically assign a value to bit in word. Generic selection macro to atomically set bit specified by nr in the word pointed to by addr to the value indicated by value, with the memory ordering as specified with memory_order. Parameters addr A pointer to the word to modify.
nr The index of the bit. value The new value of the bit - true for '1', or false for '0'. memory_order The memory order to use. Definition at line 347 of file rte_bitops.h. #define rte_bit_atomic_flip(addr, nr, memory_order)Value:.PP
Warning EXPERIMENTAL: this API may change without prior
notice.
Atomically flip bit in word. Generic selection macro to atomically negate the value of the bit specified by nr in the word pointed to by addr to the value indicated by value, with the memory ordering as specified with memory_order. Parameters addr A pointer to the word to modify.
nr The index of the bit. memory_order The memory order to use. Definition at line 373 of file rte_bitops.h. #define rte_bit_atomic_test_and_set(addr, nr, memory_order)Value:.PP
Warning EXPERIMENTAL: this API may change without prior
notice.
Atomically test and set a bit in word. Generic selection macro to atomically test and set bit specified by nr in the word pointed to by addr to '1', with the memory ordering as specified with memory_order. Parameters addr A pointer to the word to modify.
nr The index of the bit. memory_order The memory order to use. Returns Returns true if the bit was set, and false
otherwise.
Definition at line 400 of file rte_bitops.h. #define rte_bit_atomic_test_and_clear(addr, nr, memory_order)Value:.PP
Warning EXPERIMENTAL: this API may change without prior
notice.
Atomically test and clear a bit in word. Generic selection macro to atomically test and clear bit specified by nr in the word pointed to by addr to '0', with the memory ordering as specified with memory_order. Parameters addr A pointer to the word to modify.
nr The index of the bit. memory_order The memory order to use. Returns Returns true if the bit was set, and false
otherwise.
Definition at line 427 of file rte_bitops.h. #define rte_bit_atomic_test_and_assign(addr, nr, value, memory_order)Value:.PP
Warning EXPERIMENTAL: this API may change without prior
notice.
Atomically test and assign a bit in word. Generic selection macro to atomically test and assign bit specified by nr in the word pointed to by addr the value specified by value, with the memory ordering as specified with memory_order. Parameters addr A pointer to the word to modify.
nr The index of the bit. value The new value of the bit - true for '1', or false for '0'. memory_order The memory order to use. Returns Returns true if the bit was set, and false
otherwise.
Definition at line 457 of file rte_bitops.h. #define RTE_IS_POWER_OF_2(n) ((n) && !(((n) - 1) & (n)))Macro to return 1 if n is a power of 2, 0 otherwise Definition at line 1302 of file rte_bitops.h. Function Documentationstatic uint32_t rte_bit_relaxed_get32 (unsigned int nr, volatile uint32_t * addr) [inline], [static]Get the target bit from a 32-bit value without memory ordering. Parameters nr The target bit to get.
addr The address holding the bit. Returns The target bit.
Definition at line 674 of file rte_bitops.h. static void rte_bit_relaxed_set32 (unsigned int nr, volatile uint32_t * addr) [inline], [static]Set the target bit in a 32-bit value to 1 without memory ordering. Parameters nr The target bit to set.
addr The address holding the bit. Definition at line 691 of file rte_bitops.h. static void rte_bit_relaxed_clear32 (unsigned int nr, volatile uint32_t * addr) [inline], [static]Clear the target bit in a 32-bit value to 0 without memory ordering. Parameters nr The target bit to clear.
addr The address holding the bit. Definition at line 708 of file rte_bitops.h. static uint32_t rte_bit_relaxed_test_and_set32 (unsigned int nr, volatile uint32_t * addr) [inline], [static]Return the original bit from a 32-bit value, then set it to 1 without memory ordering. Parameters nr The target bit to get and set.
addr The address holding the bit. Returns The original bit.
Definition at line 728 of file rte_bitops.h. static uint32_t rte_bit_relaxed_test_and_clear32 (unsigned int nr, volatile uint32_t * addr) [inline], [static]Return the original bit from a 32-bit value, then clear it to 0 without memory ordering. Parameters nr The target bit to get and clear.
addr The address holding the bit. Returns The original bit.
Definition at line 750 of file rte_bitops.h. static uint64_t rte_bit_relaxed_get64 (unsigned int nr, volatile uint64_t * addr) [inline], [static]Get the target bit from a 64-bit value without memory ordering. Parameters nr The target bit to get.
addr The address holding the bit. Returns The target bit.
Definition at line 773 of file rte_bitops.h. static void rte_bit_relaxed_set64 (unsigned int nr, volatile uint64_t * addr) [inline], [static]Set the target bit in a 64-bit value to 1 without memory ordering. Parameters nr The target bit to set.
addr The address holding the bit. Definition at line 790 of file rte_bitops.h. static void rte_bit_relaxed_clear64 (unsigned int nr, volatile uint64_t * addr) [inline], [static]Clear the target bit in a 64-bit value to 0 without memory ordering. Parameters nr The target bit to clear.
addr The address holding the bit. Definition at line 807 of file rte_bitops.h. static uint64_t rte_bit_relaxed_test_and_set64 (unsigned int nr, volatile uint64_t * addr) [inline], [static]Return the original bit from a 64-bit value, then set it to 1 without memory ordering. Parameters nr The target bit to get and set.
addr The address holding the bit. Returns The original bit.
Definition at line 827 of file rte_bitops.h. static uint64_t rte_bit_relaxed_test_and_clear64 (unsigned int nr, volatile uint64_t * addr) [inline], [static]Return the original bit from a 64-bit value, then clear it to 0 without memory ordering. Parameters nr The target bit to get and clear.
addr The address holding the bit. Returns The original bit.
Definition at line 849 of file rte_bitops.h. static unsigned int rte_clz32 (uint32_t v) [inline], [static]Get the count of leading 0-bits in v. Parameters v The value.
Returns The count of leading zero bits.
Definition at line 1020 of file rte_bitops.h. static unsigned int rte_clz64 (uint64_t v) [inline], [static]Get the count of leading 0-bits in v. Parameters v The value.
Returns The count of leading zero bits.
Definition at line 1034 of file rte_bitops.h. static unsigned int rte_ctz32 (uint32_t v) [inline], [static]Get the count of trailing 0-bits in v. Parameters v The value.
Returns The count of trailing zero bits.
Definition at line 1048 of file rte_bitops.h. static unsigned int rte_ctz64 (uint64_t v) [inline], [static]Get the count of trailing 0-bits in v. Parameters v The value.
Returns The count of trailing zero bits.
Definition at line 1062 of file rte_bitops.h. static unsigned int rte_popcount32 (uint32_t v) [inline], [static]Get the count of 1-bits in v. Parameters v The value.
Returns The count of 1-bits.
Definition at line 1076 of file rte_bitops.h. static unsigned int rte_popcount64 (uint64_t v) [inline], [static]Get the count of 1-bits in v. Parameters v The value.
Returns The count of 1-bits.
Definition at line 1090 of file rte_bitops.h. static __rte_experimental unsigned int rte_ffs32 (uint32_t v) [inline], [static]Warning EXPERIMENTAL: this API may change without prior
notice.
Search v from least significant bit (LSB) to the most significant bit (MSB) for a set bit (1). Parameters v The value.
Returns Bit index + 1 if a set bit is found, zero
otherwise.
Definition at line 1109 of file rte_bitops.h. static __rte_experimental unsigned int rte_ffs64 (uint64_t v) [inline], [static]Warning EXPERIMENTAL: this API may change without prior
notice.
Search v from least significant bit (LSB) to the most significant bit (MSB) for a set bit (1). Parameters v The value.
Returns Bit index + 1 if a set bit is found, zero
otherwise.
Definition at line 1128 of file rte_bitops.h. static uint32_t rte_combine32ms1b (uint32_t x) [inline], [static]Combines 32b inputs most significant set bits into the least significant bits to construct a value with the same MSBs as x but all 1's under it. Parameters x The integer whose MSBs need to be combined with
its LSBs
Returns The combined value.
Definition at line 1146 of file rte_bitops.h. static uint64_t rte_combine64ms1b (uint64_t v) [inline], [static]Combines 64b inputs most significant set bits into the least significant bits to construct a value with the same MSBs as x but all 1's under it. Parameters v The integer whose MSBs need to be combined with
its LSBs
Returns The combined value.
Definition at line 1168 of file rte_bitops.h. static uint32_t rte_bsf32 (uint32_t v) [inline], [static]Searches the input parameter for the least significant set bit (starting from zero). If a least significant 1 bit is found, its bit index is returned. If the content of the input parameter is zero, then the content of the return value is undefined. Parameters v input parameter, should not be zero.
Returns least significant set bit in the input parameter.
Definition at line 1192 of file rte_bitops.h. static int rte_bsf32_safe (uint32_t v, uint32_t * pos) [inline], [static]Searches the input parameter for the least significant set bit (starting from zero). Safe version (checks for input parameter being zero). Warning pos must be a valid pointer. It is not
checked!
Parameters v The input parameter.
pos If v was not 0, this value will contain position of least significant bit within the input parameter. Returns Returns 0 if v was 0, otherwise returns 1.
Definition at line 1212 of file rte_bitops.h. static uint32_t rte_bsf64 (uint64_t v) [inline], [static]Searches the input parameter for the least significant set bit (starting from zero). If a least significant 1 bit is found, its bit index is returned. If the content of the input parameter is zero, then the content of the return value is undefined. Parameters v input parameter, should not be zero.
Returns least significant set bit in the input parameter.
Definition at line 1233 of file rte_bitops.h. static int rte_bsf64_safe (uint64_t v, uint32_t * pos) [inline], [static]Searches the input parameter for the least significant set bit (starting from zero). Safe version (checks for input parameter being zero). Warning pos must be a valid pointer. It is not
checked!
Parameters v The input parameter.
pos If v was not 0, this value will contain position of least significant bit within the input parameter. Returns Returns 0 if v was 0, otherwise returns 1.
Definition at line 1253 of file rte_bitops.h. static uint32_t rte_fls_u32 (uint32_t x) [inline], [static]Return the last (most-significant) bit set. Note The last (most significant) bit is at position 32.
rte_fls_u32(0) = 0, rte_fls_u32(1) = 1, rte_fls_u32(0x80000000) = 32 Parameters x The input parameter.
Returns The last (most-significant) bit set, or 0 if the input is
0.
Definition at line 1274 of file rte_bitops.h. static uint32_t rte_fls_u64 (uint64_t x) [inline], [static]Return the last (most-significant) bit set. Note The last (most significant) bit is at position 64.
rte_fls_u64(0) = 0, rte_fls_u64(1) = 1, rte_fls_u64(0x8000000000000000) = 64 Parameters x The input parameter.
Returns The last (most-significant) bit set, or 0 if the input is
0.
Definition at line 1292 of file rte_bitops.h. static int rte_is_power_of_2 (uint32_t n) [inline], [static]Returns true if n is a power of 2 Parameters n Number to check
Returns 1 if true, 0 otherwise
Definition at line 1311 of file rte_bitops.h. static uint32_t rte_align32pow2 (uint32_t x) [inline], [static]Aligns input parameter to the next power of 2 Parameters x The integer value to align
Returns The smallest power of 2 which is greater than or equal to
x.
Definition at line 1326 of file rte_bitops.h. static uint32_t rte_align32prevpow2 (uint32_t x) [inline], [static]Aligns input parameter to the previous power of 2 Parameters x The integer value to align
Returns The greatest power of 2 which is smaller than or equal to
x.
Definition at line 1344 of file rte_bitops.h. static uint64_t rte_align64pow2 (uint64_t v) [inline], [static]Aligns 64b input parameter to the next power of 2 Parameters v The 64b value to align
Returns The smallest power of 2 which is greater than or equal to
v.
Definition at line 1361 of file rte_bitops.h. static uint64_t rte_align64prevpow2 (uint64_t v) [inline], [static]Aligns 64b input parameter to the previous power of 2 Parameters v The 64b value to align
Returns The greatest power of 2 which is smaller than or equal to
v.
Definition at line 1379 of file rte_bitops.h. static uint32_t rte_log2_u32 (uint32_t v) [inline], [static]Return the rounded-up log2 of a integer. Note Contrary to the logarithm mathematical operation,
rte_log2_u32(0) == 0 and not -inf.
Parameters v The input parameter.
Returns The rounded-up log2 of the input, or 0 if the input is
0.
Definition at line 1398 of file rte_bitops.h. static uint32_t rte_log2_u64 (uint64_t v) [inline], [static]Return the rounded-up log2 of a 64-bit integer. Note Contrary to the logarithm mathematical operation,
rte_log2_u64(0) == 0 and not -inf.
Parameters v The input parameter.
Returns The rounded-up log2 of the input, or 0 if the input is
0.
Definition at line 1418 of file rte_bitops.h. AuthorGenerated automatically by Doxygen for DPDK from the source code.
|