Zephyr Project API 4.0.0
A Scalable Open Source RTOS
|
Buffer management. More...
#include <stddef.h>
#include <zephyr/types.h>
#include <zephyr/sys/util.h>
#include <zephyr/kernel.h>
#include <zephyr/sys/iterable_sections.h>
Go to the source code of this file.
Data Structures | |
struct | net_buf_simple |
Simple network buffer representation. More... | |
struct | net_buf_simple_state |
Parsing state of a buffer. More... | |
struct | net_buf |
Network buffer representation. More... | |
struct | net_buf_pool |
Network buffer pool representation. More... | |
Macros | |
#define | NET_BUF_SIMPLE_DEFINE(_name, _size) |
Define a net_buf_simple stack variable. | |
#define | NET_BUF_SIMPLE_DEFINE_STATIC(_name, _size) |
Define a static net_buf_simple variable. | |
#define | NET_BUF_SIMPLE(_size) |
Define a net_buf_simple stack variable and get a pointer to it. | |
#define | NET_BUF_EXTERNAL_DATA BIT(0) |
Flag indicating that the buffer's associated data pointer, points to externally allocated memory. | |
#define | NET_BUF_POOL_HEAP_DEFINE(_name, _count, _ud_size, _destroy) |
Define a new pool for buffers using the heap for the data. | |
#define | NET_BUF_POOL_FIXED_DEFINE(_name, _count, _data_size, _ud_size, _destroy) |
Define a new pool for buffers based on fixed-size data. | |
#define | NET_BUF_POOL_VAR_DEFINE(_name, _count, _data_size, _ud_size, _destroy) |
Define a new pool for buffers with variable size payloads. | |
#define | NET_BUF_POOL_DEFINE(_name, _count, _size, _ud_size, _destroy) NET_BUF_POOL_FIXED_DEFINE(_name, _count, _size, _ud_size, _destroy) |
Define a new pool for buffers. | |
Typedefs | |
typedef struct net_buf *(* | net_buf_allocator_cb) (k_timeout_t timeout, void *user_data) |
Network buffer allocator callback. | |
Functions | |
static void | net_buf_simple_init (struct net_buf_simple *buf, size_t reserve_head) |
Initialize a net_buf_simple object. | |
void | net_buf_simple_init_with_data (struct net_buf_simple *buf, void *data, size_t size) |
Initialize a net_buf_simple object with data. | |
static void | net_buf_simple_reset (struct net_buf_simple *buf) |
Reset buffer. | |
void | net_buf_simple_clone (const struct net_buf_simple *original, struct net_buf_simple *clone) |
Clone buffer state, using the same data buffer. | |
void * | net_buf_simple_add (struct net_buf_simple *buf, size_t len) |
Prepare data to be added at the end of the buffer. | |
void * | net_buf_simple_add_mem (struct net_buf_simple *buf, const void *mem, size_t len) |
Copy given number of bytes from memory to the end of the buffer. | |
uint8_t * | net_buf_simple_add_u8 (struct net_buf_simple *buf, uint8_t val) |
Add (8-bit) byte at the end of the buffer. | |
void | net_buf_simple_add_le16 (struct net_buf_simple *buf, uint16_t val) |
Add 16-bit value at the end of the buffer. | |
void | net_buf_simple_add_be16 (struct net_buf_simple *buf, uint16_t val) |
Add 16-bit value at the end of the buffer. | |
void | net_buf_simple_add_le24 (struct net_buf_simple *buf, uint32_t val) |
Add 24-bit value at the end of the buffer. | |
void | net_buf_simple_add_be24 (struct net_buf_simple *buf, uint32_t val) |
Add 24-bit value at the end of the buffer. | |
void | net_buf_simple_add_le32 (struct net_buf_simple *buf, uint32_t val) |
Add 32-bit value at the end of the buffer. | |
void | net_buf_simple_add_be32 (struct net_buf_simple *buf, uint32_t val) |
Add 32-bit value at the end of the buffer. | |
void | net_buf_simple_add_le40 (struct net_buf_simple *buf, uint64_t val) |
Add 40-bit value at the end of the buffer. | |
void | net_buf_simple_add_be40 (struct net_buf_simple *buf, uint64_t val) |
Add 40-bit value at the end of the buffer. | |
void | net_buf_simple_add_le48 (struct net_buf_simple *buf, uint64_t val) |
Add 48-bit value at the end of the buffer. | |
void | net_buf_simple_add_be48 (struct net_buf_simple *buf, uint64_t val) |
Add 48-bit value at the end of the buffer. | |
void | net_buf_simple_add_le64 (struct net_buf_simple *buf, uint64_t val) |
Add 64-bit value at the end of the buffer. | |
void | net_buf_simple_add_be64 (struct net_buf_simple *buf, uint64_t val) |
Add 64-bit value at the end of the buffer. | |
void * | net_buf_simple_remove_mem (struct net_buf_simple *buf, size_t len) |
Remove data from the end of the buffer. | |
uint8_t | net_buf_simple_remove_u8 (struct net_buf_simple *buf) |
Remove a 8-bit value from the end of the buffer. | |
uint16_t | net_buf_simple_remove_le16 (struct net_buf_simple *buf) |
Remove and convert 16 bits from the end of the buffer. | |
uint16_t | net_buf_simple_remove_be16 (struct net_buf_simple *buf) |
Remove and convert 16 bits from the end of the buffer. | |
uint32_t | net_buf_simple_remove_le24 (struct net_buf_simple *buf) |
Remove and convert 24 bits from the end of the buffer. | |
uint32_t | net_buf_simple_remove_be24 (struct net_buf_simple *buf) |
Remove and convert 24 bits from the end of the buffer. | |
uint32_t | net_buf_simple_remove_le32 (struct net_buf_simple *buf) |
Remove and convert 32 bits from the end of the buffer. | |
uint32_t | net_buf_simple_remove_be32 (struct net_buf_simple *buf) |
Remove and convert 32 bits from the end of the buffer. | |
uint64_t | net_buf_simple_remove_le40 (struct net_buf_simple *buf) |
Remove and convert 40 bits from the end of the buffer. | |
uint64_t | net_buf_simple_remove_be40 (struct net_buf_simple *buf) |
Remove and convert 40 bits from the end of the buffer. | |
uint64_t | net_buf_simple_remove_le48 (struct net_buf_simple *buf) |
Remove and convert 48 bits from the end of the buffer. | |
uint64_t | net_buf_simple_remove_be48 (struct net_buf_simple *buf) |
Remove and convert 48 bits from the end of the buffer. | |
uint64_t | net_buf_simple_remove_le64 (struct net_buf_simple *buf) |
Remove and convert 64 bits from the end of the buffer. | |
uint64_t | net_buf_simple_remove_be64 (struct net_buf_simple *buf) |
Remove and convert 64 bits from the end of the buffer. | |
void * | net_buf_simple_push (struct net_buf_simple *buf, size_t len) |
Prepare data to be added to the start of the buffer. | |
void * | net_buf_simple_push_mem (struct net_buf_simple *buf, const void *mem, size_t len) |
Copy given number of bytes from memory to the start of the buffer. | |
void | net_buf_simple_push_le16 (struct net_buf_simple *buf, uint16_t val) |
Push 16-bit value to the beginning of the buffer. | |
void | net_buf_simple_push_be16 (struct net_buf_simple *buf, uint16_t val) |
Push 16-bit value to the beginning of the buffer. | |
void | net_buf_simple_push_u8 (struct net_buf_simple *buf, uint8_t val) |
Push 8-bit value to the beginning of the buffer. | |
void | net_buf_simple_push_le24 (struct net_buf_simple *buf, uint32_t val) |
Push 24-bit value to the beginning of the buffer. | |
void | net_buf_simple_push_be24 (struct net_buf_simple *buf, uint32_t val) |
Push 24-bit value to the beginning of the buffer. | |
void | net_buf_simple_push_le32 (struct net_buf_simple *buf, uint32_t val) |
Push 32-bit value to the beginning of the buffer. | |
void | net_buf_simple_push_be32 (struct net_buf_simple *buf, uint32_t val) |
Push 32-bit value to the beginning of the buffer. | |
void | net_buf_simple_push_le40 (struct net_buf_simple *buf, uint64_t val) |
Push 40-bit value to the beginning of the buffer. | |
void | net_buf_simple_push_be40 (struct net_buf_simple *buf, uint64_t val) |
Push 40-bit value to the beginning of the buffer. | |
void | net_buf_simple_push_le48 (struct net_buf_simple *buf, uint64_t val) |
Push 48-bit value to the beginning of the buffer. | |
void | net_buf_simple_push_be48 (struct net_buf_simple *buf, uint64_t val) |
Push 48-bit value to the beginning of the buffer. | |
void | net_buf_simple_push_le64 (struct net_buf_simple *buf, uint64_t val) |
Push 64-bit value to the beginning of the buffer. | |
void | net_buf_simple_push_be64 (struct net_buf_simple *buf, uint64_t val) |
Push 64-bit value to the beginning of the buffer. | |
void * | net_buf_simple_pull (struct net_buf_simple *buf, size_t len) |
Remove data from the beginning of the buffer. | |
void * | net_buf_simple_pull_mem (struct net_buf_simple *buf, size_t len) |
Remove data from the beginning of the buffer. | |
uint8_t | net_buf_simple_pull_u8 (struct net_buf_simple *buf) |
Remove a 8-bit value from the beginning of the buffer. | |
uint16_t | net_buf_simple_pull_le16 (struct net_buf_simple *buf) |
Remove and convert 16 bits from the beginning of the buffer. | |
uint16_t | net_buf_simple_pull_be16 (struct net_buf_simple *buf) |
Remove and convert 16 bits from the beginning of the buffer. | |
uint32_t | net_buf_simple_pull_le24 (struct net_buf_simple *buf) |
Remove and convert 24 bits from the beginning of the buffer. | |
uint32_t | net_buf_simple_pull_be24 (struct net_buf_simple *buf) |
Remove and convert 24 bits from the beginning of the buffer. | |
uint32_t | net_buf_simple_pull_le32 (struct net_buf_simple *buf) |
Remove and convert 32 bits from the beginning of the buffer. | |
uint32_t | net_buf_simple_pull_be32 (struct net_buf_simple *buf) |
Remove and convert 32 bits from the beginning of the buffer. | |
uint64_t | net_buf_simple_pull_le40 (struct net_buf_simple *buf) |
Remove and convert 40 bits from the beginning of the buffer. | |
uint64_t | net_buf_simple_pull_be40 (struct net_buf_simple *buf) |
Remove and convert 40 bits from the beginning of the buffer. | |
uint64_t | net_buf_simple_pull_le48 (struct net_buf_simple *buf) |
Remove and convert 48 bits from the beginning of the buffer. | |
uint64_t | net_buf_simple_pull_be48 (struct net_buf_simple *buf) |
Remove and convert 48 bits from the beginning of the buffer. | |
uint64_t | net_buf_simple_pull_le64 (struct net_buf_simple *buf) |
Remove and convert 64 bits from the beginning of the buffer. | |
uint64_t | net_buf_simple_pull_be64 (struct net_buf_simple *buf) |
Remove and convert 64 bits from the beginning of the buffer. | |
static uint8_t * | net_buf_simple_tail (const struct net_buf_simple *buf) |
Get the tail pointer for a buffer. | |
size_t | net_buf_simple_headroom (const struct net_buf_simple *buf) |
Check buffer headroom. | |
size_t | net_buf_simple_tailroom (const struct net_buf_simple *buf) |
Check buffer tailroom. | |
uint16_t | net_buf_simple_max_len (const struct net_buf_simple *buf) |
Check maximum net_buf_simple::len value. | |
static void | net_buf_simple_save (const struct net_buf_simple *buf, struct net_buf_simple_state *state) |
Save the parsing state of a buffer. | |
static void | net_buf_simple_restore (struct net_buf_simple *buf, struct net_buf_simple_state *state) |
Restore the parsing state of a buffer. | |
struct net_buf_pool * | net_buf_pool_get (int id) |
Looks up a pool based on its ID. | |
int | net_buf_id (const struct net_buf *buf) |
Get a zero-based index for a buffer. | |
struct net_buf * | net_buf_alloc_fixed (struct net_buf_pool *pool, k_timeout_t timeout) |
Allocate a new fixed buffer from a pool. | |
static struct net_buf * | net_buf_alloc (struct net_buf_pool *pool, k_timeout_t timeout) |
struct net_buf * | net_buf_alloc_len (struct net_buf_pool *pool, size_t size, k_timeout_t timeout) |
Allocate a new variable length buffer from a pool. | |
struct net_buf * | net_buf_alloc_with_data (struct net_buf_pool *pool, void *data, size_t size, k_timeout_t timeout) |
Allocate a new buffer from a pool but with external data pointer. | |
struct net_buf * | net_buf_get (struct k_fifo *fifo, k_timeout_t timeout) |
Get a buffer from a FIFO. | |
static void | net_buf_destroy (struct net_buf *buf) |
Destroy buffer from custom destroy callback. | |
void | net_buf_reset (struct net_buf *buf) |
Reset buffer. | |
void | net_buf_simple_reserve (struct net_buf_simple *buf, size_t reserve) |
Initialize buffer with the given headroom. | |
void | net_buf_slist_put (sys_slist_t *list, struct net_buf *buf) |
Put a buffer into a list. | |
struct net_buf * | net_buf_slist_get (sys_slist_t *list) |
Get a buffer from a list. | |
void | net_buf_put (struct k_fifo *fifo, struct net_buf *buf) |
Put a buffer to the end of a FIFO. | |
void | net_buf_unref (struct net_buf *buf) |
Decrements the reference count of a buffer. | |
struct net_buf * | net_buf_ref (struct net_buf *buf) |
Increment the reference count of a buffer. | |
struct net_buf * | net_buf_clone (struct net_buf *buf, k_timeout_t timeout) |
Clone buffer. | |
static void * | net_buf_user_data (const struct net_buf *buf) |
Get a pointer to the user data of a buffer. | |
int | net_buf_user_data_copy (struct net_buf *dst, const struct net_buf *src) |
Copy user data from one to another buffer. | |
static void | net_buf_reserve (struct net_buf *buf, size_t reserve) |
Initialize buffer with the given headroom. | |
static void * | net_buf_add (struct net_buf *buf, size_t len) |
Prepare data to be added at the end of the buffer. | |
static void * | net_buf_add_mem (struct net_buf *buf, const void *mem, size_t len) |
Copies the given number of bytes to the end of the buffer. | |
static uint8_t * | net_buf_add_u8 (struct net_buf *buf, uint8_t val) |
Add (8-bit) byte at the end of the buffer. | |
static void | net_buf_add_le16 (struct net_buf *buf, uint16_t val) |
Add 16-bit value at the end of the buffer. | |
static void | net_buf_add_be16 (struct net_buf *buf, uint16_t val) |
Add 16-bit value at the end of the buffer. | |
static void | net_buf_add_le24 (struct net_buf *buf, uint32_t val) |
Add 24-bit value at the end of the buffer. | |
static void | net_buf_add_be24 (struct net_buf *buf, uint32_t val) |
Add 24-bit value at the end of the buffer. | |
static void | net_buf_add_le32 (struct net_buf *buf, uint32_t val) |
Add 32-bit value at the end of the buffer. | |
static void | net_buf_add_be32 (struct net_buf *buf, uint32_t val) |
Add 32-bit value at the end of the buffer. | |
static void | net_buf_add_le40 (struct net_buf *buf, uint64_t val) |
Add 40-bit value at the end of the buffer. | |
static void | net_buf_add_be40 (struct net_buf *buf, uint64_t val) |
Add 40-bit value at the end of the buffer. | |
static void | net_buf_add_le48 (struct net_buf *buf, uint64_t val) |
Add 48-bit value at the end of the buffer. | |
static void | net_buf_add_be48 (struct net_buf *buf, uint64_t val) |
Add 48-bit value at the end of the buffer. | |
static void | net_buf_add_le64 (struct net_buf *buf, uint64_t val) |
Add 64-bit value at the end of the buffer. | |
static void | net_buf_add_be64 (struct net_buf *buf, uint64_t val) |
Add 64-bit value at the end of the buffer. | |
static void * | net_buf_remove_mem (struct net_buf *buf, size_t len) |
Remove data from the end of the buffer. | |
static uint8_t | net_buf_remove_u8 (struct net_buf *buf) |
Remove a 8-bit value from the end of the buffer. | |
static uint16_t | net_buf_remove_le16 (struct net_buf *buf) |
Remove and convert 16 bits from the end of the buffer. | |
static uint16_t | net_buf_remove_be16 (struct net_buf *buf) |
Remove and convert 16 bits from the end of the buffer. | |
static uint32_t | net_buf_remove_be24 (struct net_buf *buf) |
Remove and convert 24 bits from the end of the buffer. | |
static uint32_t | net_buf_remove_le24 (struct net_buf *buf) |
Remove and convert 24 bits from the end of the buffer. | |
static uint32_t | net_buf_remove_le32 (struct net_buf *buf) |
Remove and convert 32 bits from the end of the buffer. | |
static uint32_t | net_buf_remove_be32 (struct net_buf *buf) |
Remove and convert 32 bits from the end of the buffer. | |
static uint64_t | net_buf_remove_le40 (struct net_buf *buf) |
Remove and convert 40 bits from the end of the buffer. | |
static uint64_t | net_buf_remove_be40 (struct net_buf *buf) |
Remove and convert 40 bits from the end of the buffer. | |
static uint64_t | net_buf_remove_le48 (struct net_buf *buf) |
Remove and convert 48 bits from the end of the buffer. | |
static uint64_t | net_buf_remove_be48 (struct net_buf *buf) |
Remove and convert 48 bits from the end of the buffer. | |
static uint64_t | net_buf_remove_le64 (struct net_buf *buf) |
Remove and convert 64 bits from the end of the buffer. | |
static uint64_t | net_buf_remove_be64 (struct net_buf *buf) |
Remove and convert 64 bits from the end of the buffer. | |
static void * | net_buf_push (struct net_buf *buf, size_t len) |
Prepare data to be added at the start of the buffer. | |
static void * | net_buf_push_mem (struct net_buf *buf, const void *mem, size_t len) |
Copies the given number of bytes to the start of the buffer. | |
static void | net_buf_push_u8 (struct net_buf *buf, uint8_t val) |
Push 8-bit value to the beginning of the buffer. | |
static void | net_buf_push_le16 (struct net_buf *buf, uint16_t val) |
Push 16-bit value to the beginning of the buffer. | |
static void | net_buf_push_be16 (struct net_buf *buf, uint16_t val) |
Push 16-bit value to the beginning of the buffer. | |
static void | net_buf_push_le24 (struct net_buf *buf, uint32_t val) |
Push 24-bit value to the beginning of the buffer. | |
static void | net_buf_push_be24 (struct net_buf *buf, uint32_t val) |
Push 24-bit value to the beginning of the buffer. | |
static void | net_buf_push_le32 (struct net_buf *buf, uint32_t val) |
Push 32-bit value to the beginning of the buffer. | |
static void | net_buf_push_be32 (struct net_buf *buf, uint32_t val) |
Push 32-bit value to the beginning of the buffer. | |
static void | net_buf_push_le40 (struct net_buf *buf, uint64_t val) |
Push 40-bit value to the beginning of the buffer. | |
static void | net_buf_push_be40 (struct net_buf *buf, uint64_t val) |
Push 40-bit value to the beginning of the buffer. | |
static void | net_buf_push_le48 (struct net_buf *buf, uint64_t val) |
Push 48-bit value to the beginning of the buffer. | |
static void | net_buf_push_be48 (struct net_buf *buf, uint64_t val) |
Push 48-bit value to the beginning of the buffer. | |
static void | net_buf_push_le64 (struct net_buf *buf, uint64_t val) |
Push 64-bit value to the beginning of the buffer. | |
static void | net_buf_push_be64 (struct net_buf *buf, uint64_t val) |
Push 64-bit value to the beginning of the buffer. | |
static void * | net_buf_pull (struct net_buf *buf, size_t len) |
Remove data from the beginning of the buffer. | |
static void * | net_buf_pull_mem (struct net_buf *buf, size_t len) |
Remove data from the beginning of the buffer. | |
static uint8_t | net_buf_pull_u8 (struct net_buf *buf) |
Remove a 8-bit value from the beginning of the buffer. | |
static uint16_t | net_buf_pull_le16 (struct net_buf *buf) |
Remove and convert 16 bits from the beginning of the buffer. | |
static uint16_t | net_buf_pull_be16 (struct net_buf *buf) |
Remove and convert 16 bits from the beginning of the buffer. | |
static uint32_t | net_buf_pull_le24 (struct net_buf *buf) |
Remove and convert 24 bits from the beginning of the buffer. | |
static uint32_t | net_buf_pull_be24 (struct net_buf *buf) |
Remove and convert 24 bits from the beginning of the buffer. | |
static uint32_t | net_buf_pull_le32 (struct net_buf *buf) |
Remove and convert 32 bits from the beginning of the buffer. | |
static uint32_t | net_buf_pull_be32 (struct net_buf *buf) |
Remove and convert 32 bits from the beginning of the buffer. | |
static uint64_t | net_buf_pull_le40 (struct net_buf *buf) |
Remove and convert 40 bits from the beginning of the buffer. | |
static uint64_t | net_buf_pull_be40 (struct net_buf *buf) |
Remove and convert 40 bits from the beginning of the buffer. | |
static uint64_t | net_buf_pull_le48 (struct net_buf *buf) |
Remove and convert 48 bits from the beginning of the buffer. | |
static uint64_t | net_buf_pull_be48 (struct net_buf *buf) |
Remove and convert 48 bits from the beginning of the buffer. | |
static uint64_t | net_buf_pull_le64 (struct net_buf *buf) |
Remove and convert 64 bits from the beginning of the buffer. | |
static uint64_t | net_buf_pull_be64 (struct net_buf *buf) |
Remove and convert 64 bits from the beginning of the buffer. | |
static size_t | net_buf_tailroom (const struct net_buf *buf) |
Check buffer tailroom. | |
static size_t | net_buf_headroom (const struct net_buf *buf) |
Check buffer headroom. | |
static uint16_t | net_buf_max_len (const struct net_buf *buf) |
Check maximum net_buf::len value. | |
static uint8_t * | net_buf_tail (const struct net_buf *buf) |
Get the tail pointer for a buffer. | |
struct net_buf * | net_buf_frag_last (struct net_buf *frags) |
Find the last fragment in the fragment list. | |
void | net_buf_frag_insert (struct net_buf *parent, struct net_buf *frag) |
Insert a new fragment to a chain of bufs. | |
struct net_buf * | net_buf_frag_add (struct net_buf *head, struct net_buf *frag) |
Add a new fragment to the end of a chain of bufs. | |
struct net_buf * | net_buf_frag_del (struct net_buf *parent, struct net_buf *frag) |
Delete existing fragment from a chain of bufs. | |
size_t | net_buf_linearize (void *dst, size_t dst_len, const struct net_buf *src, size_t offset, size_t len) |
Copy bytes from net_buf chain starting at offset to linear buffer. | |
size_t | net_buf_append_bytes (struct net_buf *buf, size_t len, const void *value, k_timeout_t timeout, net_buf_allocator_cb allocate_cb, void *user_data) |
Append data to a list of net_buf. | |
size_t | net_buf_data_match (const struct net_buf *buf, size_t offset, const void *data, size_t len) |
Match data with a net_buf's content. | |
static struct net_buf * | net_buf_skip (struct net_buf *buf, size_t len) |
Skip N number of bytes in a net_buf. | |
static size_t | net_buf_frags_len (const struct net_buf *buf) |
Calculate amount of bytes stored in fragments. | |
Buffer management.