DPDK
24.07.0
|
Go to the source code of this file.
Macros | |
#define | RTE_BIT64(nr) (UINT64_C(1) << (nr)) |
#define | RTE_BIT32(nr) (UINT32_C(1) << (nr)) |
#define | RTE_SHIFT_VAL32(val, nr) (UINT32_C(val) << (nr)) |
#define | RTE_SHIFT_VAL64(val, nr) (UINT64_C(val) << (nr)) |
#define | RTE_GENMASK32(high, low) (((~UINT32_C(0)) << (low)) & (~UINT32_C(0) >> (31u - (high)))) |
#define | RTE_GENMASK64(high, low) (((~UINT64_C(0)) << (low)) & (~UINT64_C(0) >> (63u - (high)))) |
#define | RTE_FIELD_GET32(mask, reg) ((typeof(mask))(((reg) & (mask)) >> rte_ctz32(mask))) |
#define | RTE_FIELD_GET64(mask, reg) ((typeof(mask))(((reg) & (mask)) >> rte_ctz64(mask))) |
#define | RTE_IS_POWER_OF_2(n) ((n) && !(((n) - 1) & (n))) |
Functions | |
static uint32_t | rte_bit_relaxed_get32 (unsigned int nr, volatile uint32_t *addr) |
static void | rte_bit_relaxed_set32 (unsigned int nr, volatile uint32_t *addr) |
static void | rte_bit_relaxed_clear32 (unsigned int nr, volatile uint32_t *addr) |
static uint32_t | rte_bit_relaxed_test_and_set32 (unsigned int nr, volatile uint32_t *addr) |
static uint32_t | rte_bit_relaxed_test_and_clear32 (unsigned int nr, volatile uint32_t *addr) |
static uint64_t | rte_bit_relaxed_get64 (unsigned int nr, volatile uint64_t *addr) |
static void | rte_bit_relaxed_set64 (unsigned int nr, volatile uint64_t *addr) |
static void | rte_bit_relaxed_clear64 (unsigned int nr, volatile uint64_t *addr) |
static uint64_t | rte_bit_relaxed_test_and_set64 (unsigned int nr, volatile uint64_t *addr) |
static uint64_t | rte_bit_relaxed_test_and_clear64 (unsigned int nr, volatile uint64_t *addr) |
static unsigned int | rte_clz32 (uint32_t v) |
static unsigned int | rte_clz64 (uint64_t v) |
static unsigned int | rte_ctz32 (uint32_t v) |
static unsigned int | rte_ctz64 (uint64_t v) |
static unsigned int | rte_popcount32 (uint32_t v) |
static unsigned int | rte_popcount64 (uint64_t v) |
static uint32_t | rte_combine32ms1b (uint32_t x) |
static uint64_t | rte_combine64ms1b (uint64_t v) |
static uint32_t | rte_bsf32 (uint32_t v) |
static int | rte_bsf32_safe (uint32_t v, uint32_t *pos) |
static uint32_t | rte_bsf64 (uint64_t v) |
static int | rte_bsf64_safe (uint64_t v, uint32_t *pos) |
static uint32_t | rte_fls_u32 (uint32_t x) |
static uint32_t | rte_fls_u64 (uint64_t x) |
static int | rte_is_power_of_2 (uint32_t n) |
static uint32_t | rte_align32pow2 (uint32_t x) |
static uint32_t | rte_align32prevpow2 (uint32_t x) |
static uint64_t | rte_align64pow2 (uint64_t v) |
static uint64_t | rte_align64prevpow2 (uint64_t v) |
static uint32_t | rte_log2_u32 (uint32_t v) |
static uint32_t | rte_log2_u64 (uint64_t v) |
Bit Operations
This file defines a family of APIs for bit operations without enforcing memory ordering.
Definition in file rte_bitops.h.
#define RTE_BIT64 | ( | nr | ) | (UINT64_C(1) << (nr)) |
Get the uint64_t value for a specified bit set.
nr | The bit number in range of 0 to 63. |
Definition at line 32 of file rte_bitops.h.
#define RTE_BIT32 | ( | nr | ) | (UINT32_C(1) << (nr)) |
Get the uint32_t value for a specified bit set.
nr | The bit number in range of 0 to 31. |
Definition at line 40 of file rte_bitops.h.
#define RTE_SHIFT_VAL32 | ( | val, | |
nr | |||
) | (UINT32_C(val) << (nr)) |
Get the uint32_t shifted value.
val | The value to be shifted. |
nr | The shift number in range of 0 to (32 - width of val). |
Definition at line 50 of file rte_bitops.h.
#define RTE_SHIFT_VAL64 | ( | val, | |
nr | |||
) | (UINT64_C(val) << (nr)) |
Get the uint64_t shifted value.
val | The value to be shifted. |
nr | The shift number in range of 0 to (64 - width of val). |
Definition at line 60 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.
high | High bit position. |
low | Low bit position. |
Definition at line 71 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.
high | High bit position. |
low | Low bit position. |
Definition at line 83 of file rte_bitops.h.
#define RTE_FIELD_GET32 | ( | mask, | |
reg | |||
) | ((typeof(mask))(((reg) & (mask)) >> rte_ctz32(mask))) |
Extract a 32-bit field element.
mask | Shifted mask. |
reg | Value of entire bitfield. |
Definition at line 94 of file rte_bitops.h.
#define RTE_FIELD_GET64 | ( | mask, | |
reg | |||
) | ((typeof(mask))(((reg) & (mask)) >> rte_ctz64(mask))) |
Extract a 64-bit field element.
mask | Shifted mask. |
reg | Value of entire bitfield. |
Definition at line 105 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 663 of file rte_bitops.h.
|
inlinestatic |
Get the target bit from a 32-bit value without memory ordering.
nr | The target bit to get. |
addr | The address holding the bit. |
Definition at line 121 of file rte_bitops.h.
|
inlinestatic |
Set the target bit in a 32-bit value to 1 without memory ordering.
nr | The target bit to set. |
addr | The address holding the bit. |
Definition at line 138 of file rte_bitops.h.
|
inlinestatic |
Clear the target bit in a 32-bit value to 0 without memory ordering.
nr | The target bit to clear. |
addr | The address holding the bit. |
Definition at line 155 of file rte_bitops.h.
|
inlinestatic |
Return the original bit from a 32-bit value, then set it to 1 without memory ordering.
nr | The target bit to get and set. |
addr | The address holding the bit. |
Definition at line 175 of file rte_bitops.h.
|
inlinestatic |
Return the original bit from a 32-bit value, then clear it to 0 without memory ordering.
nr | The target bit to get and clear. |
addr | The address holding the bit. |
Definition at line 197 of file rte_bitops.h.
|
inlinestatic |
Get the target bit from a 64-bit value without memory ordering.
nr | The target bit to get. |
addr | The address holding the bit. |
Definition at line 220 of file rte_bitops.h.
|
inlinestatic |
Set the target bit in a 64-bit value to 1 without memory ordering.
nr | The target bit to set. |
addr | The address holding the bit. |
Definition at line 237 of file rte_bitops.h.
|
inlinestatic |
Clear the target bit in a 64-bit value to 0 without memory ordering.
nr | The target bit to clear. |
addr | The address holding the bit. |
Definition at line 254 of file rte_bitops.h.
|
inlinestatic |
Return the original bit from a 64-bit value, then set it to 1 without memory ordering.
nr | The target bit to get and set. |
addr | The address holding the bit. |
Definition at line 274 of file rte_bitops.h.
|
inlinestatic |
Return the original bit from a 64-bit value, then clear it to 0 without memory ordering.
nr | The target bit to get and clear. |
addr | The address holding the bit. |
Definition at line 296 of file rte_bitops.h.
|
inlinestatic |
Get the count of leading 0-bits in v.
v | The value. |
Definition at line 419 of file rte_bitops.h.
|
inlinestatic |
Get the count of leading 0-bits in v.
v | The value. |
Definition at line 433 of file rte_bitops.h.
|
inlinestatic |
Get the count of trailing 0-bits in v.
v | The value. |
Definition at line 447 of file rte_bitops.h.
|
inlinestatic |
Get the count of trailing 0-bits in v.
v | The value. |
Definition at line 461 of file rte_bitops.h.
|
inlinestatic |
Get the count of 1-bits in v.
v | The value. |
Definition at line 475 of file rte_bitops.h.
|
inlinestatic |
Get the count of 1-bits in v.
v | The value. |
Definition at line 489 of file rte_bitops.h.
|
inlinestatic |
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.
x | The integer whose MSBs need to be combined with its LSBs |
Definition at line 507 of file rte_bitops.h.
|
inlinestatic |
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.
v | The integer whose MSBs need to be combined with its LSBs |
Definition at line 529 of file rte_bitops.h.
|
inlinestatic |
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.
v | input parameter, should not be zero. |
Definition at line 553 of file rte_bitops.h.
|
inlinestatic |
Searches the input parameter for the least significant set bit (starting from zero). Safe version (checks for input parameter being zero).
pos
must be a valid pointer. It is not checked!v | The input parameter. |
pos | If v was not 0, this value will contain position of least significant bit within the input parameter. |
v
was 0, otherwise returns 1. Definition at line 573 of file rte_bitops.h.
|
inlinestatic |
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.
v | input parameter, should not be zero. |
Definition at line 594 of file rte_bitops.h.
|
inlinestatic |
Searches the input parameter for the least significant set bit (starting from zero). Safe version (checks for input parameter being zero).
pos
must be a valid pointer. It is not checked!v | The input parameter. |
pos | If v was not 0, this value will contain position of least significant bit within the input parameter. |
v
was 0, otherwise returns 1. Definition at line 614 of file rte_bitops.h.
|
inlinestatic |
Return the last (most-significant) bit set.
x | The input parameter. |
Definition at line 635 of file rte_bitops.h.
|
inlinestatic |
Return the last (most-significant) bit set.
x | The input parameter. |
Definition at line 653 of file rte_bitops.h.
|
inlinestatic |
Returns true if n is a power of 2
n | Number to check |
Definition at line 672 of file rte_bitops.h.
|
inlinestatic |
Aligns input parameter to the next power of 2
x | The integer value to align |
Definition at line 687 of file rte_bitops.h.
|
inlinestatic |
Aligns input parameter to the previous power of 2
x | The integer value to align |
Definition at line 705 of file rte_bitops.h.
|
inlinestatic |
Aligns 64b input parameter to the next power of 2
v | The 64b value to align |
Definition at line 722 of file rte_bitops.h.
|
inlinestatic |
Aligns 64b input parameter to the previous power of 2
v | The 64b value to align |
Definition at line 740 of file rte_bitops.h.
|
inlinestatic |
Return the rounded-up log2 of a integer.
v | The input parameter. |
Definition at line 759 of file rte_bitops.h.
|
inlinestatic |
Return the rounded-up log2 of a 64-bit integer.
v | The input parameter. |
Definition at line 779 of file rte_bitops.h.