Zephyr Project API 4.4.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
sys_ringq API

Data Structures

struct  sys_ringq
 A structure to represent a ringq queue. More...

Macros

#define SYS_RINGQ_DEFINE(name, item_size, item_capacity)
 Define and initialize a ring queue.

Functions

static void sys_ringq_init (struct sys_ringq *ringq, uint8_t *data, size_t data_size, size_t item_size)
 Initialize a ringq queue.
static void sys_ringq_reset (struct sys_ringq *ringq)
 Reset ringq queue state to its initial state.
static bool sys_ringq_empty (const struct sys_ringq *ringq)
 Determine if a sys_ringq is empty.
static bool sys_ringq_full (const struct sys_ringq *ringq)
 Determine if a sys_ringq is full.
static size_t sys_ringq_space (const struct sys_ringq *ringq)
 Determine free space in a ringq queue.
static size_t sys_ringq_capacity (const struct sys_ringq *ringq)
 Return ringq queue capacity.
static size_t sys_ringq_size (const struct sys_ringq *ringq)
 Determine size of available data in a ringq queue.
static int sys_ringq_put (struct sys_ringq *ringq, const void *element)
 Write (copy) data to a ringq queue.
static int sys_ringq_get (struct sys_ringq *ringq, void *element)
 Read data from a sys_ringq queue.
static int sys_ringq_peek (struct sys_ringq *ringq, void *data)
 Peek first element from a sys_ringq queue.

Detailed Description

Macro Definition Documentation

◆ SYS_RINGQ_DEFINE

#define SYS_RINGQ_DEFINE ( name,
item_size,
item_capacity )

#include <ringq.h>

Value:
static uint8_t __noinit CONCAT(_ringq_data_, name)[item_size * item_capacity]; \
struct sys_ringq name = SYS_RINGQ_INIT(CONCAT(_ringq_data_, name), item_size, item_capacity)
#define CONCAT(...)
Concatenate input arguments.
Definition util.h:308
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
A structure to represent a ringq queue.
Definition ringq.h:27

Define and initialize a ring queue.

This macro establishes a sys_ringq queue of a fixed size.

Parameters
nameName of the ringq instance.
item_sizeSize of each ringq element (in bytes).
item_capacitycapacity (in number of elements).

Function Documentation

◆ sys_ringq_capacity()

size_t sys_ringq_capacity ( const struct sys_ringq * ringq)
inlinestatic

#include <ringq.h>

Return ringq queue capacity.

Parameters
ringqAddress of sys_ringq struct.
Returns
sys_ringq capacity in number of elements.

◆ sys_ringq_empty()

bool sys_ringq_empty ( const struct sys_ringq * ringq)
inlinestatic

#include <ringq.h>

Determine if a sys_ringq is empty.

Parameters
ringqAddress of sys_ringq struct.
Returns
true if the sys_ringq is empty, else false.

◆ sys_ringq_full()

bool sys_ringq_full ( const struct sys_ringq * ringq)
inlinestatic

#include <ringq.h>

Determine if a sys_ringq is full.

Parameters
ringqAddress of sys_ringq struct.
Returns
true if the sys_ringq is full, else false.

◆ sys_ringq_get()

int sys_ringq_get ( struct sys_ringq * ringq,
void * element )
inlinestatic

#include <ringq.h>

Read data from a sys_ringq queue.

This routine reads data from a ringq queue buf.

Parameters
ringqAddress of the sys_ringq struct.
elementAddress of the output buffer.
Return values
0if successful, -ENODATA if the ringq is empty.

◆ sys_ringq_init()

void sys_ringq_init ( struct sys_ringq * ringq,
uint8_t * data,
size_t data_size,
size_t item_size )
inlinestatic

#include <ringq.h>

Initialize a ringq queue.

This routine initializes a ringq queue.

Parameters
ringqAddress of sys_ringq struct.
dataringq sys_ringq data area.
data_sizeSize of the ringq data area (in bytes).
item_sizeSize of each ringq element (in bytes).
Note
data_size should be a multiple of item_size. If not, it will be adjusted to the nearest lower multiple of item_size.

◆ sys_ringq_peek()

int sys_ringq_peek ( struct sys_ringq * ringq,
void * data )
inlinestatic

#include <ringq.h>

Peek first element from a sys_ringq queue.

Parameters
ringqAddress of sys_ringq struct.
dataAddress of the output buffer.
Return values
0if successful, -ENODATA if the ringq is empty.

◆ sys_ringq_put()

int sys_ringq_put ( struct sys_ringq * ringq,
const void * element )
inlinestatic

#include <ringq.h>

Write (copy) data to a ringq queue.

This routine writes data to a ringq queue queue.

Parameters
ringqAddress of sys_ringq queue.
elementAddress of item.
Return values
0if successful, -ENOSPC if there is no space in the ringq.

◆ sys_ringq_reset()

void sys_ringq_reset ( struct sys_ringq * ringq)
inlinestatic

#include <ringq.h>

Reset ringq queue state to its initial state.

Parameters
ringqAddress of sys_ringq struct.

◆ sys_ringq_size()

size_t sys_ringq_size ( const struct sys_ringq * ringq)
inlinestatic

#include <ringq.h>

Determine size of available data in a ringq queue.

Parameters
ringqAddress of sys_ringq struct.
Returns
sys_ringq size in number of elements.

◆ sys_ringq_space()

size_t sys_ringq_space ( const struct sys_ringq * ringq)
inlinestatic

#include <ringq.h>

Determine free space in a ringq queue.

Parameters
ringqAddress of ringq queue.
Returns
ringq queue free space in number of elements.