File syn_spsc_queue.h¶
FileList > src > syntropic > util > syn_spsc_queue.h
Go to the source code of this file
Lock-free Single-Producer Single-Consumer (SPSC) queue. More...
#include "../common/syn_defs.h"#include <stdbool.h>#include <stddef.h>#include <stdint.h>
Classes¶
| Type | Name |
|---|---|
| struct | SYN_SPSC_Queue SPSC Queue Control Structure. |
Public Functions¶
| Type | Name |
|---|---|
| size_t | syn_spsc_queue_count (const SYN_SPSC_Queue * q) Get current number of items stored in queue. |
| SYN_Status | syn_spsc_queue_init (SYN_SPSC_Queue * q, void * elem_buf, size_t elem_size, size_t capacity) Initialize a Lock-Free SPSC Queue. |
| bool | syn_spsc_queue_is_empty (const SYN_SPSC_Queue * q) Check if the queue is empty. |
| bool | syn_spsc_queue_is_full (const SYN_SPSC_Queue * q) Check if the queue is full. |
| SYN_Status | syn_spsc_queue_pop (SYN_SPSC_Queue * q, void * out_item) Pop an item from the queue (Consumer only). |
| SYN_Status | syn_spsc_queue_push (SYN_SPSC_Queue * q, const void * item) Push an item into the queue (Producer only). |
Detailed Description¶
Provides a lock-free, zero-allocation SPSC item queue designed for high-performance ISR-to-Task, Task-to-Task, or Inter-Core (multicore) message passing without spinlocks or disabling interrupts.
Public Functions Documentation¶
function syn_spsc_queue_count¶
Get current number of items stored in queue.
Parameters:
qQueue context.
Returns:
Count of items in queue.
function syn_spsc_queue_init¶
Initialize a Lock-Free SPSC Queue.
SYN_Status syn_spsc_queue_init (
SYN_SPSC_Queue * q,
void * elem_buf,
size_t elem_size,
size_t capacity
)
Parameters:
qPointer to queue control structure.elem_bufPointer to caller-provided backing memory buffer.elem_sizeSize of each element in bytes (must be > 0).capacityNumber of elements buffer can hold (must be > 0).
Returns:
SYN_OK on success.
function syn_spsc_queue_is_empty¶
Check if the queue is empty.
Parameters:
qQueue context.
Returns:
true if empty.
function syn_spsc_queue_is_full¶
Check if the queue is full.
Parameters:
qQueue context.
Returns:
true if full.
function syn_spsc_queue_pop¶
Pop an item from the queue (Consumer only).
Parameters:
qQueue context.out_itemPointer to memory receiving popped item.
Returns:
SYN_OK on success, or SYN_ERROR if empty.
function syn_spsc_queue_push¶
Push an item into the queue (Producer only).
Parameters:
qQueue context.itemPointer to item to copy into queue.
Returns:
SYN_OK on success, or SYN_BUSY if full.
The documentation for this class was generated from the following file src/syntropic/util/syn_spsc_queue.h