Zephyr Project API 4.4.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
ring_buffer.h File Reference

Simple, header-only ring buffer implementation. More...

#include <errno.h>
#include <stdbool.h>
#include <stdint.h>
#include <string.h>
#include <zephyr/sys/util.h>
#include <zephyr/toolchain.h>
#include <zephyr/sys/__assert.h>

Go to the source code of this file.

Data Structures

struct  ring_buf
 A structure to represent a ring buffer. More...

Macros

#define RING_BUF_INIT(buf, sz)
 Statically initialize a ring buffer.
#define RING_BUF_DECLARE(name, size8)
 Define and initialize a ring buffer for byte data.

Functions

static uint32_t ring_buf_capacity_get (const struct ring_buf *rb)
 Return ring buffer capacity.
static uint32_t ring_buf_size_get (const struct ring_buf *rb)
 Determine size of available data in a ring buffer.
static uint32_t ring_buf_space_get (const struct ring_buf *rb)
 Determine free space in a ring buffer.
static bool ring_buf_is_empty (const struct ring_buf *rb)
 Determine if a ring buffer is empty.
static bool ring_buf_is_full (const struct ring_buf *rb)
 Determine if a ring buffer is full.
static void ring_buf_reset (struct ring_buf *rb)
 Reset ring buffer state.
static void ring_buf_init (struct ring_buf *rb, uint32_t size, uint8_t *data)
 Initialize a ring buffer for byte data.
static uint32_t ring_buf_put_ptr (struct ring_buf *rb, uint8_t **data, size_t offset)
 Get address of region for writing data to a ring buffer.
static void ring_buf_commit (struct ring_buf *rb, size_t size)
 Indicate number of bytes written to a ring buffer.
static uint32_t ring_buf_get_ptr (struct ring_buf *rb, uint8_t **data, size_t offset)
 Get address of valid data within a ring buffer.
static void ring_buf_consume (struct ring_buf *rb, size_t size)
 Indicate number of bytes consumed from a ring buffer.
static uint32_t ring_buf_put (struct ring_buf *rb, const uint8_t *data, uint32_t size)
 Write (copy) data to a ring buffer.
static uint32_t ring_buf_get (struct ring_buf *rb, uint8_t *data, uint32_t size)
 Read data from a ring buffer.
static uint32_t ring_buf_peek (const struct ring_buf *rb, uint8_t *data, uint32_t size)
 Peek at data from a ring buffer without consuming it.

Detailed Description

Simple, header-only ring buffer implementation.