Motr
M0
|
Data Structures | |
struct | m0_buf |
struct | m0_bufs |
Macros | |
#define | M0_BUF_INIT(size, data) ((struct m0_buf){ .b_nob = (size), .b_addr = (data) }) |
#define | M0_BUF_INIT_CONST(size, data) (const struct m0_buf) { .b_nob = (size), .b_addr = (void *)(data) } |
#define | M0_BUF_INIT_PTR(p) M0_BUF_INIT(sizeof *(p), (p)) |
#define | M0_BUF_INITS(str) M0_BUF_INIT(strlen(str), (str)) |
#define | M0_BUF_INIT0 M0_BUF_INIT(0, NULL) |
#define | M0_BUF_INIT_PTR_CONST(p) M0_BUF_INIT_CONST(sizeof *(p), (p)) |
#define | BUF_F "[%p,%llu]" |
#define | BUF_P(p) (p)->b_addr, (unsigned long long)(p)->b_nob |
Functions | |
M0_INTERNAL void | m0_buf_init (struct m0_buf *buf, void *data, uint32_t nob) |
M0_INTERNAL int | m0_buf_alloc (struct m0_buf *buf, size_t size) |
M0_INTERNAL void | m0_buf_free (struct m0_buf *buf) |
M0_INTERNAL int | m0_buf_new_aligned (struct m0_buf *buf, const void *data, uint32_t nob, unsigned shift) |
M0_INTERNAL int | m0_buf_cmp (const struct m0_buf *x, const struct m0_buf *y) |
M0_INTERNAL bool | m0_buf_eq (const struct m0_buf *x, const struct m0_buf *y) |
M0_INTERNAL void | m0_buf_memcpy (struct m0_buf *dst, const struct m0_buf *src) |
M0_INTERNAL int | m0_buf_copy (struct m0_buf *dest, const struct m0_buf *src) |
M0_INTERNAL int | m0_buf_copy_aligned (struct m0_buf *dst, const struct m0_buf *src, unsigned shift) |
M0_INTERNAL bool | m0_buf_is_set (const struct m0_buf *buf) |
M0_INTERNAL bool | m0_buf_streq (const struct m0_buf *buf, const char *str) |
M0_INTERNAL char * | m0_buf_strdup (const struct m0_buf *buf) |
M0_INTERNAL int | m0_bufs_from_strings (struct m0_bufs *dest, const char **src) |
M0_INTERNAL int | m0_bufs_to_strings (const char ***dest, const struct m0_bufs *src) |
M0_INTERNAL bool | m0_bufs_streq (const struct m0_bufs *bufs, const char **strs) |
M0_INTERNAL void | m0_bufs_free (struct m0_bufs *bufs) |
struct m0_buf | M0_XCA_DOMAIN (conf|rpc) |
Initialisers for struct m0_buf.
#define M0_BUF_INIT0 M0_BUF_INIT(0, NULL) |
#define M0_BUF_INIT_PTR_CONST | ( | p | ) | M0_BUF_INIT_CONST(sizeof *(p), (p)) |
#define M0_BUF_INITS | ( | str | ) | M0_BUF_INIT(strlen(str), (str)) |
M0_INTERNAL int m0_buf_alloc | ( | struct m0_buf * | buf, |
size_t | size | ||
) |
Compares memory of two buffers.
Returns zero if buffers are equal (including their sizes). Otherwise, returns difference between the first pair of bytes that differ in ‘x’ and ‘y’. If buffers have different sizes and one is a prefix of the second, the sign of the expression (x->b_nob - y->b_nob) is returned.
Therefore, sign of the return value can be used to determine lexicographical order of the buffers.
m0_buf_cmp() can be treated as an analogue of strcmp(3) for m0_buf strings that may contain '\0'.
Definition at line 73 of file buf.c.
Copies a buffer.
User is responsible for m0_buf_free()ing ‘dest’.
Definition at line 104 of file buf.c.
M0_INTERNAL void m0_buf_free | ( | struct m0_buf * | buf | ) |
M0_INTERNAL void m0_buf_init | ( | struct m0_buf * | buf, |
void * | data, | ||
uint32_t | nob | ||
) |
M0_INTERNAL bool m0_buf_is_set | ( | const struct m0_buf * | buf | ) |
M0_INTERNAL int m0_buf_new_aligned | ( | struct m0_buf * | buf, |
const void * | data, | ||
uint32_t | nob, | ||
unsigned | shift | ||
) |
M0_INTERNAL char * m0_buf_strdup | ( | const struct m0_buf * | buf | ) |
M0_INTERNAL bool m0_buf_streq | ( | const struct m0_buf * | buf, |
const char * | str | ||
) |
M0_INTERNAL void m0_bufs_free | ( | struct m0_bufs * | bufs | ) |
M0_INTERNAL int m0_bufs_from_strings | ( | struct m0_bufs * | dest, |
const char ** | src | ||
) |
Constructs a sequence of memory buffers, copying data from NULL-terminated array of C strings.
User is responsible for m0_bufs_free()ing ‘dest’.
Definition at line 157 of file buf.c.
M0_INTERNAL bool m0_bufs_streq | ( | const struct m0_bufs * | bufs, |
const char ** | strs | ||
) |
Checks equality of given sequences.
Definition at line 217 of file buf.c.
M0_INTERNAL int m0_bufs_to_strings | ( | const char *** | dest, |
const struct m0_bufs * | src | ||
) |
Constructs a NULL-terminated array of C strings, copying data from a sequence of memory buffers.
The elements of ‘*dest’ should be freed eventually.
Definition at line 188 of file buf.c.