|
#define | __STDC_WANT_LIB_EXT1__ 1 |
|
#define | SPDK_CACHE_LINE_SIZE 64 |
|
#define | spdk_min(a, b) (((a)<(b))?(a):(b)) |
|
#define | spdk_max(a, b) (((a)>(b))?(a):(b)) |
|
#define | SPDK_COUNTOF(arr) (sizeof(arr) / sizeof((arr)[0])) |
|
#define | SPDK_CONTAINEROF(ptr, type, member) ((type *)((uintptr_t)ptr - offsetof(type, member))) |
|
#define | SPDK_SIZEOF(ptr, member) (offsetof(__typeof__(*(ptr)), member) + sizeof((ptr)->member)) |
| Returns size of an object pointer by ptr up to and including member.
|
|
#define | SPDK_SIZEOF_MEMBER(type, member) (sizeof(((type *)0)->member)) |
| Get the size of a member of a struct.
|
|
#define | SPDK_SEC_TO_USEC 1000000ULL |
|
#define | SPDK_SEC_TO_NSEC 1000000000ULL |
|
#define | SPDK_CEIL_DIV(x, y) (((x)+(y)-1)/(y)) |
|
#define | SPDK_ALIGN_FLOOR(val, align) (__typeof__(val))((val) & (~((__typeof__(val))((align) - 1)))) |
| Macro to align a value to a given power-of-two. More...
|
|
#define | SPDK_ALIGN_CEIL(val, align) SPDK_ALIGN_FLOOR(((val) + ((__typeof__(val)) (align) - 1)), align) |
| Macro to align a value to a given power-of-two. More...
|
|
#define | SPDK_BIT(n) (1ul << (n)) |
|
#define | SPDK_IOVITER_SIZE(count) (sizeof(struct spdk_single_ioviter) * (count - 2) + sizeof(struct spdk_ioviter)) |
|
#define | SPDK_IOV_ONE(piov, piovcnt, buf, buflen) |
|
#define | SPDK_CLANG_ANALYZER_PREINIT_PTR_ARRAY(arr, arr_size, buf_size) |
| Scan build is really pessimistic and assumes that mempool functions can dequeue NULL buffers even if they return success. More...
|
|
#define | SPDK_SN32_CMPMAX (1U << (32 - 1)) |
|
|
uint32_t | spdk_u32log2 (uint32_t x) |
|
static uint32_t | spdk_align32pow2 (uint32_t x) |
|
uint64_t | spdk_u64log2 (uint64_t x) |
|
static uint64_t | spdk_align64pow2 (uint64_t x) |
|
static bool | spdk_u32_is_pow2 (uint32_t x) |
| Check if a uint32_t is a power of 2.
|
|
static bool | spdk_u64_is_pow2 (uint64_t x) |
| Check if a uint64_t is a power of 2.
|
|
static uint64_t | spdk_divide_round_up (uint64_t num, uint64_t divisor) |
|
size_t | spdk_ioviter_first (struct spdk_ioviter *iter, struct iovec *siov, size_t siovcnt, struct iovec *diov, size_t diovcnt, void **src, void **dst) |
| Initialize and move to the first common segment of the two given iovecs. More...
|
|
size_t | spdk_ioviter_firstv (struct spdk_ioviter *iter, uint32_t count, struct iovec **iov, size_t *iovcnt, void **out) |
| Initialize and move to the first common segment of the N given iovecs. More...
|
|
size_t | spdk_ioviter_next (struct spdk_ioviter *iter, void **src, void **dst) |
| Move to the next segment in the iterator. More...
|
|
size_t | spdk_ioviter_nextv (struct spdk_ioviter *iter, void **out) |
| Move to the next segment in the iterator. More...
|
|
void | spdk_iov_memset (struct iovec *iovs, int iovcnt, int c) |
| Operate like memset across an iovec.
|
|
void | spdk_iov_one (struct iovec *iov, int *iovcnt, void *buf, size_t buflen) |
| Initialize an iovec with just the single given buffer.
|
|
size_t | spdk_iovcpy (struct iovec *siov, size_t siovcnt, struct iovec *diov, size_t diovcnt) |
| Copy the data described by the source iovec to the destination iovec. More...
|
|
size_t | spdk_iovmove (struct iovec *siov, size_t siovcnt, struct iovec *diov, size_t diovcnt) |
| Same as spdk_iovcpy(), but the src/dst buffers might overlap. More...
|
|
void | spdk_iov_xfer_init (struct spdk_iov_xfer *ix, struct iovec *iovs, int iovcnt) |
| Initialize a transfer context to point to the given iovec.
|
|
size_t | spdk_iov_xfer_from_buf (struct spdk_iov_xfer *ix, const void *buf, size_t buf_len) |
| Copy from the given buf up to buf_len bytes, into the given ix iovec iterator, advancing the iterator as needed. More...
|
|
size_t | spdk_iov_xfer_to_buf (struct spdk_iov_xfer *ix, const void *buf, size_t buf_len) |
| Copy from the given ix iovec iterator into the given buf up to buf_len bytes, advancing the iterator as needed. More...
|
|
void | spdk_copy_iovs_to_buf (void *buf, size_t buf_len, struct iovec *iovs, int iovcnt) |
| Copy iovs contents to buf through memcpy.
|
|
void | spdk_copy_buf_to_iovs (struct iovec *iovs, int iovcnt, void *buf, size_t buf_len) |
| Copy buf contents to iovs through memcpy.
|
|
static uint32_t | spdk_sn32_add (uint32_t s1, uint32_t s2) |
| Add two sequence numbers s1 and s2. More...
|
|
static bool | spdk_sn32_lt (uint32_t s1, uint32_t s2) |
| Compare if sequence number s1 is less than s2. More...
|
|
static bool | spdk_sn32_gt (uint32_t s1, uint32_t s2) |
| Compare if sequence number s1 is greater than s2. More...
|
|
static void | spdk_memset_s (void *data, size_t data_size, int ch, size_t count) |
| Copies the value (unsigned char)ch into each of the first count characters of the object pointed to by data data_size is used to check that filling count bytes won't lead to buffer overflow. More...
|
|
General utility functions.