Zephyr API Documentation  2.7.0-rc2
A Scalable Open Source RTOS
buf.h File Reference

Buffer management. More...

#include <stddef.h>
#include <zephyr/types.h>
#include <sys/util.h>
#include <zephyr.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_data_cb
 
struct  net_buf_data_alloc
 
struct  net_buf_pool
 Network buffer pool representation. More...
 
struct  net_buf_pool_fixed
 

Macros

#define CONFIG_NET_BUF_USER_DATA_SIZE   0
 
#define NET_BUF_SIMPLE_DEFINE(_name, _size)
 Define a net_buf_simple stack variable. More...
 
#define NET_BUF_SIMPLE_DEFINE_STATIC(_name, _size)
 Define a static net_buf_simple variable. More...
 
#define NET_BUF_SIMPLE(_size)
 Define a net_buf_simple stack variable and get a pointer to it. More...
 
#define NET_BUF_FRAGS   BIT(0)
 
#define NET_BUF_EXTERNAL_DATA   BIT(1)
 
#define NET_BUF_POOL_HEAP_DEFINE(_name, _count, _destroy)
 Define a new pool for buffers using the heap for the data. More...
 
#define NET_BUF_POOL_FIXED_DEFINE(_name, _count, _data_size, _destroy)
 Define a new pool for buffers based on fixed-size data. More...
 
#define NET_BUF_POOL_VAR_DEFINE(_name, _count, _data_size, _destroy)
 Define a new pool for buffers with variable size payloads. More...
 
#define NET_BUF_POOL_DEFINE(_name, _count, _size, _ud_size, _destroy)
 Define a new pool for buffers. More...
 

Typedefs

typedef struct net_buf *(* net_buf_allocator_cb) (k_timeout_t timeout, void *user_data)
 Network buffer allocator callback. More...
 

Functions

static void net_buf_simple_init (struct net_buf_simple *buf, size_t reserve_head)
 Initialize a net_buf_simple object. More...
 
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. More...
 
static void net_buf_simple_reset (struct net_buf_simple *buf)
 Reset buffer. More...
 
void net_buf_simple_clone (const struct net_buf_simple *original, struct net_buf_simple *clone)
 
voidnet_buf_simple_add (struct net_buf_simple *buf, size_t len)
 Prepare data to be added at the end of the buffer. More...
 
voidnet_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. More...
 
uint8_tnet_buf_simple_add_u8 (struct net_buf_simple *buf, uint8_t val)
 Add (8-bit) byte at the end of the buffer. More...
 
void net_buf_simple_add_le16 (struct net_buf_simple *buf, uint16_t val)
 Add 16-bit value at the end of the buffer. More...
 
void net_buf_simple_add_be16 (struct net_buf_simple *buf, uint16_t val)
 Add 16-bit value at the end of the buffer. More...
 
void net_buf_simple_add_le24 (struct net_buf_simple *buf, uint32_t val)
 Add 24-bit value at the end of the buffer. More...
 
void net_buf_simple_add_be24 (struct net_buf_simple *buf, uint32_t val)
 Add 24-bit value at the end of the buffer. More...
 
void net_buf_simple_add_le32 (struct net_buf_simple *buf, uint32_t val)
 Add 32-bit value at the end of the buffer. More...
 
void net_buf_simple_add_be32 (struct net_buf_simple *buf, uint32_t val)
 Add 32-bit value at the end of the buffer. More...
 
void net_buf_simple_add_le48 (struct net_buf_simple *buf, uint64_t val)
 Add 48-bit value at the end of the buffer. More...
 
void net_buf_simple_add_be48 (struct net_buf_simple *buf, uint64_t val)
 Add 48-bit value at the end of the buffer. More...
 
void net_buf_simple_add_le64 (struct net_buf_simple *buf, uint64_t val)
 Add 64-bit value at the end of the buffer. More...
 
void net_buf_simple_add_be64 (struct net_buf_simple *buf, uint64_t val)
 Add 64-bit value at the end of the buffer. More...
 
voidnet_buf_simple_remove_mem (struct net_buf_simple *buf, size_t len)
 Remove data from the end of the buffer. More...
 
uint8_t net_buf_simple_remove_u8 (struct net_buf_simple *buf)
 Remove a 8-bit value from the end of the buffer. More...
 
uint16_t net_buf_simple_remove_le16 (struct net_buf_simple *buf)
 Remove and convert 16 bits from the end of the buffer. More...
 
uint16_t net_buf_simple_remove_be16 (struct net_buf_simple *buf)
 Remove and convert 16 bits from the end of the buffer. More...
 
uint32_t net_buf_simple_remove_le24 (struct net_buf_simple *buf)
 Remove and convert 24 bits from the end of the buffer. More...
 
uint32_t net_buf_simple_remove_be24 (struct net_buf_simple *buf)
 Remove and convert 24 bits from the end of the buffer. More...
 
uint32_t net_buf_simple_remove_le32 (struct net_buf_simple *buf)
 Remove and convert 32 bits from the end of the buffer. More...
 
uint32_t net_buf_simple_remove_be32 (struct net_buf_simple *buf)
 Remove and convert 32 bits from the end of the buffer. More...
 
uint64_t net_buf_simple_remove_le48 (struct net_buf_simple *buf)
 Remove and convert 48 bits from the end of the buffer. More...
 
uint64_t net_buf_simple_remove_be48 (struct net_buf_simple *buf)
 Remove and convert 48 bits from the end of the buffer. More...
 
uint64_t net_buf_simple_remove_le64 (struct net_buf_simple *buf)
 Remove and convert 64 bits from the end of the buffer. More...
 
uint64_t net_buf_simple_remove_be64 (struct net_buf_simple *buf)
 Remove and convert 64 bits from the end of the buffer. More...
 
voidnet_buf_simple_push (struct net_buf_simple *buf, size_t len)
 Prepare data to be added to the start of the buffer. More...
 
voidnet_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. More...
 
void net_buf_simple_push_le16 (struct net_buf_simple *buf, uint16_t val)
 Push 16-bit value to the beginning of the buffer. More...
 
void net_buf_simple_push_be16 (struct net_buf_simple *buf, uint16_t val)
 Push 16-bit value to the beginning of the buffer. More...
 
void net_buf_simple_push_u8 (struct net_buf_simple *buf, uint8_t val)
 Push 8-bit value to the beginning of the buffer. More...
 
void net_buf_simple_push_le24 (struct net_buf_simple *buf, uint32_t val)
 Push 24-bit value to the beginning of the buffer. More...
 
void net_buf_simple_push_be24 (struct net_buf_simple *buf, uint32_t val)
 Push 24-bit value to the beginning of the buffer. More...
 
void net_buf_simple_push_le32 (struct net_buf_simple *buf, uint32_t val)
 Push 32-bit value to the beginning of the buffer. More...
 
void net_buf_simple_push_be32 (struct net_buf_simple *buf, uint32_t val)
 Push 32-bit value to the beginning of the buffer. More...
 
void net_buf_simple_push_le48 (struct net_buf_simple *buf, uint64_t val)
 Push 48-bit value to the beginning of the buffer. More...
 
void net_buf_simple_push_be48 (struct net_buf_simple *buf, uint64_t val)
 Push 48-bit value to the beginning of the buffer. More...
 
void net_buf_simple_push_le64 (struct net_buf_simple *buf, uint64_t val)
 Push 64-bit value to the beginning of the buffer. More...
 
void net_buf_simple_push_be64 (struct net_buf_simple *buf, uint64_t val)
 Push 64-bit value to the beginning of the buffer. More...
 
voidnet_buf_simple_pull (struct net_buf_simple *buf, size_t len)
 Remove data from the beginning of the buffer. More...
 
voidnet_buf_simple_pull_mem (struct net_buf_simple *buf, size_t len)
 Remove data from the beginning of the buffer. More...
 
uint8_t net_buf_simple_pull_u8 (struct net_buf_simple *buf)
 Remove a 8-bit value from the beginning of the buffer. More...
 
uint16_t net_buf_simple_pull_le16 (struct net_buf_simple *buf)
 Remove and convert 16 bits from the beginning of the buffer. More...
 
uint16_t net_buf_simple_pull_be16 (struct net_buf_simple *buf)
 Remove and convert 16 bits from the beginning of the buffer. More...
 
uint32_t net_buf_simple_pull_le24 (struct net_buf_simple *buf)
 Remove and convert 24 bits from the beginning of the buffer. More...
 
uint32_t net_buf_simple_pull_be24 (struct net_buf_simple *buf)
 Remove and convert 24 bits from the beginning of the buffer. More...
 
uint32_t net_buf_simple_pull_le32 (struct net_buf_simple *buf)
 Remove and convert 32 bits from the beginning of the buffer. More...
 
uint32_t net_buf_simple_pull_be32 (struct net_buf_simple *buf)
 Remove and convert 32 bits from the beginning of the buffer. More...
 
uint64_t net_buf_simple_pull_le48 (struct net_buf_simple *buf)
 Remove and convert 48 bits from the beginning of the buffer. More...
 
uint64_t net_buf_simple_pull_be48 (struct net_buf_simple *buf)
 Remove and convert 48 bits from the beginning of the buffer. More...
 
uint64_t net_buf_simple_pull_le64 (struct net_buf_simple *buf)
 Remove and convert 64 bits from the beginning of the buffer. More...
 
uint64_t net_buf_simple_pull_be64 (struct net_buf_simple *buf)
 Remove and convert 64 bits from the beginning of the buffer. More...
 
static uint8_tnet_buf_simple_tail (struct net_buf_simple *buf)
 Get the tail pointer for a buffer. More...
 
size_t net_buf_simple_headroom (struct net_buf_simple *buf)
 Check buffer headroom. More...
 
size_t net_buf_simple_tailroom (struct net_buf_simple *buf)
 Check buffer tailroom. More...
 
uint16_t net_buf_simple_max_len (struct net_buf_simple *buf)
 Check maximum net_buf_simple::len value. More...
 
static void net_buf_simple_save (struct net_buf_simple *buf, struct net_buf_simple_state *state)
 Save the parsing state of a buffer. More...
 
static void net_buf_simple_restore (struct net_buf_simple *buf, struct net_buf_simple_state *state)
 Restore the parsing state of a buffer. More...
 
struct net_buf_poolnet_buf_pool_get (int id)
 Looks up a pool based on its ID. More...
 
int net_buf_id (struct net_buf *buf)
 Get a zero-based index for a buffer. More...
 
struct net_bufnet_buf_alloc_fixed (struct net_buf_pool *pool, k_timeout_t timeout)
 Allocate a new fixed buffer from a pool. More...
 
static struct net_bufnet_buf_alloc (struct net_buf_pool *pool, k_timeout_t timeout)
 
struct net_bufnet_buf_alloc_len (struct net_buf_pool *pool, size_t size, k_timeout_t timeout)
 Allocate a new variable length buffer from a pool. More...
 
struct net_bufnet_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. More...
 
struct net_bufnet_buf_get (struct k_fifo *fifo, k_timeout_t timeout)
 Get a buffer from a FIFO. More...
 
static void net_buf_destroy (struct net_buf *buf)
 Destroy buffer from custom destroy callback. More...
 
void net_buf_reset (struct net_buf *buf)
 Reset buffer. More...
 
void net_buf_simple_reserve (struct net_buf_simple *buf, size_t reserve)
 Initialize buffer with the given headroom. More...
 
void net_buf_slist_put (sys_slist_t *list, struct net_buf *buf)
 Put a buffer into a list. More...
 
struct net_bufnet_buf_slist_get (sys_slist_t *list)
 Get a buffer from a list. More...
 
void net_buf_put (struct k_fifo *fifo, struct net_buf *buf)
 Put a buffer to the end of a FIFO. More...
 
void net_buf_unref (struct net_buf *buf)
 Decrements the reference count of a buffer. More...
 
struct net_bufnet_buf_ref (struct net_buf *buf)
 Increment the reference count of a buffer. More...
 
struct net_bufnet_buf_clone (struct net_buf *buf, k_timeout_t timeout)
 Clone buffer. More...
 
static voidnet_buf_user_data (const struct net_buf *buf)
 Get a pointer to the user data of a buffer. More...
 
static void net_buf_reserve (struct net_buf *buf, size_t reserve)
 Initialize buffer with the given headroom. More...
 
static voidnet_buf_add (struct net_buf *buf, size_t len)
 Prepare data to be added at the end of the buffer. More...
 
static voidnet_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. More...
 
static uint8_tnet_buf_add_u8 (struct net_buf *buf, uint8_t val)
 Add (8-bit) byte at the end of the buffer. More...
 
static void net_buf_add_le16 (struct net_buf *buf, uint16_t val)
 Add 16-bit value at the end of the buffer. More...
 
static void net_buf_add_be16 (struct net_buf *buf, uint16_t val)
 Add 16-bit value at the end of the buffer. More...
 
static void net_buf_add_le24 (struct net_buf *buf, uint32_t val)
 Add 24-bit value at the end of the buffer. More...
 
static void net_buf_add_be24 (struct net_buf *buf, uint32_t val)
 Add 24-bit value at the end of the buffer. More...
 
static void net_buf_add_le32 (struct net_buf *buf, uint32_t val)
 Add 32-bit value at the end of the buffer. More...
 
static void net_buf_add_be32 (struct net_buf *buf, uint32_t val)
 Add 32-bit value at the end of the buffer. More...
 
static void net_buf_add_le48 (struct net_buf *buf, uint64_t val)
 Add 48-bit value at the end of the buffer. More...
 
static void net_buf_add_be48 (struct net_buf *buf, uint64_t val)
 Add 48-bit value at the end of the buffer. More...
 
static void net_buf_add_le64 (struct net_buf *buf, uint64_t val)
 Add 64-bit value at the end of the buffer. More...
 
static void net_buf_add_be64 (struct net_buf *buf, uint64_t val)
 Add 64-bit value at the end of the buffer. More...
 
static voidnet_buf_remove_mem (struct net_buf *buf, size_t len)
 Remove data from the end of the buffer. More...
 
static uint8_t net_buf_remove_u8 (struct net_buf *buf)
 Remove a 8-bit value from the end of the buffer. More...
 
static uint16_t net_buf_remove_le16 (struct net_buf *buf)
 Remove and convert 16 bits from the end of the buffer. More...
 
static uint16_t net_buf_remove_be16 (struct net_buf *buf)
 Remove and convert 16 bits from the end of the buffer. More...
 
static uint32_t net_buf_remove_be24 (struct net_buf *buf)
 Remove and convert 24 bits from the end of the buffer. More...
 
static uint32_t net_buf_remove_le24 (struct net_buf *buf)
 Remove and convert 24 bits from the end of the buffer. More...
 
static uint32_t net_buf_remove_le32 (struct net_buf *buf)
 Remove and convert 32 bits from the end of the buffer. More...
 
static uint32_t net_buf_remove_be32 (struct net_buf *buf)
 Remove and convert 32 bits from the end of the buffer. More...
 
static uint64_t net_buf_remove_le48 (struct net_buf *buf)
 Remove and convert 48 bits from the end of the buffer. More...
 
static uint64_t net_buf_remove_be48 (struct net_buf *buf)
 Remove and convert 48 bits from the end of the buffer. More...
 
static uint64_t net_buf_remove_le64 (struct net_buf *buf)
 Remove and convert 64 bits from the end of the buffer. More...
 
static uint64_t net_buf_remove_be64 (struct net_buf *buf)
 Remove and convert 64 bits from the end of the buffer. More...
 
static voidnet_buf_push (struct net_buf *buf, size_t len)
 Prepare data to be added at the start of the buffer. More...
 
static voidnet_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. More...
 
static void net_buf_push_u8 (struct net_buf *buf, uint8_t val)
 Push 8-bit value to the beginning of the buffer. More...
 
static void net_buf_push_le16 (struct net_buf *buf, uint16_t val)
 Push 16-bit value to the beginning of the buffer. More...
 
static void net_buf_push_be16 (struct net_buf *buf, uint16_t val)
 Push 16-bit value to the beginning of the buffer. More...
 
static void net_buf_push_le24 (struct net_buf *buf, uint32_t val)
 Push 24-bit value to the beginning of the buffer. More...
 
static void net_buf_push_be24 (struct net_buf *buf, uint32_t val)
 Push 24-bit value to the beginning of the buffer. More...
 
static void net_buf_push_le32 (struct net_buf *buf, uint32_t val)
 Push 32-bit value to the beginning of the buffer. More...
 
static void net_buf_push_be32 (struct net_buf *buf, uint32_t val)
 Push 32-bit value to the beginning of the buffer. More...
 
static void net_buf_push_le48 (struct net_buf *buf, uint64_t val)
 Push 48-bit value to the beginning of the buffer. More...
 
static void net_buf_push_be48 (struct net_buf *buf, uint64_t val)
 Push 48-bit value to the beginning of the buffer. More...
 
static void net_buf_push_le64 (struct net_buf *buf, uint64_t val)
 Push 64-bit value to the beginning of the buffer. More...
 
static void net_buf_push_be64 (struct net_buf *buf, uint64_t val)
 Push 64-bit value to the beginning of the buffer. More...
 
static voidnet_buf_pull (struct net_buf *buf, size_t len)
 Remove data from the beginning of the buffer. More...
 
static voidnet_buf_pull_mem (struct net_buf *buf, size_t len)
 Remove data from the beginning of the buffer. More...
 
static uint8_t net_buf_pull_u8 (struct net_buf *buf)
 Remove a 8-bit value from the beginning of the buffer. More...
 
static uint16_t net_buf_pull_le16 (struct net_buf *buf)
 Remove and convert 16 bits from the beginning of the buffer. More...
 
static uint16_t net_buf_pull_be16 (struct net_buf *buf)
 Remove and convert 16 bits from the beginning of the buffer. More...
 
static uint32_t net_buf_pull_le24 (struct net_buf *buf)
 Remove and convert 24 bits from the beginning of the buffer. More...
 
static uint32_t net_buf_pull_be24 (struct net_buf *buf)
 Remove and convert 24 bits from the beginning of the buffer. More...
 
static uint32_t net_buf_pull_le32 (struct net_buf *buf)
 Remove and convert 32 bits from the beginning of the buffer. More...
 
static uint32_t net_buf_pull_be32 (struct net_buf *buf)
 Remove and convert 32 bits from the beginning of the buffer. More...
 
static uint64_t net_buf_pull_le48 (struct net_buf *buf)
 Remove and convert 48 bits from the beginning of the buffer. More...
 
static uint64_t net_buf_pull_be48 (struct net_buf *buf)
 Remove and convert 48 bits from the beginning of the buffer. More...
 
static uint64_t net_buf_pull_le64 (struct net_buf *buf)
 Remove and convert 64 bits from the beginning of the buffer. More...
 
static uint64_t net_buf_pull_be64 (struct net_buf *buf)
 Remove and convert 64 bits from the beginning of the buffer. More...
 
static size_t net_buf_tailroom (struct net_buf *buf)
 Check buffer tailroom. More...
 
static size_t net_buf_headroom (struct net_buf *buf)
 Check buffer headroom. More...
 
static uint16_t net_buf_max_len (struct net_buf *buf)
 Check maximum net_buf::len value. More...
 
static uint8_tnet_buf_tail (struct net_buf *buf)
 Get the tail pointer for a buffer. More...
 
struct net_bufnet_buf_frag_last (struct net_buf *frags)
 Find the last fragment in the fragment list. More...
 
void net_buf_frag_insert (struct net_buf *parent, struct net_buf *frag)
 Insert a new fragment to a chain of bufs. More...
 
struct net_bufnet_buf_frag_add (struct net_buf *head, struct net_buf *frag)
 Add a new fragment to the end of a chain of bufs. More...
 
struct net_bufnet_buf_frag_del (struct net_buf *parent, struct net_buf *frag)
 Delete existing fragment from a chain of bufs. More...
 
size_t net_buf_linearize (void *dst, size_t dst_len, struct net_buf *src, size_t offset, size_t len)
 Copy bytes from net_buf chain starting at offset to linear buffer. More...
 
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. More...
 
static struct net_bufnet_buf_skip (struct net_buf *buf, size_t len)
 Skip N number of bytes in a net_buf. More...
 
static size_t net_buf_frags_len (struct net_buf *buf)
 Calculate amount of bytes stored in fragments. More...
 

Detailed Description

Buffer management.

Macro Definition Documentation

◆ CONFIG_NET_BUF_USER_DATA_SIZE

#define CONFIG_NET_BUF_USER_DATA_SIZE   0