|
Zephyr Project API 4.0.0
A Scalable Open Source RTOS
|
Multiple Producer Single Consumer (MPSC) Lockfree Queue API. More...
Files | |
| file | mpsc_lockfree.h |
| A wait-free intrusive multi producer single consumer (MPSC) queue using a singly linked list. | |
Data Structures | |
| struct | mpsc_node |
| Queue member. More... | |
| struct | mpsc |
| MPSC Queue. More... | |
Macros | |
| #define | mpsc_ptr_get(ptr) atomic_ptr_get(&(ptr)) |
| #define | mpsc_ptr_set(ptr, val) atomic_ptr_set(&(ptr), val) |
| #define | mpsc_ptr_set_get(ptr, val) atomic_ptr_set(&(ptr), val) |
| #define | MPSC_INIT(symbol) |
| Static initializer for a mpsc queue. | |
Typedefs | |
| typedef atomic_ptr_t | mpsc_ptr_t |
Functions | |
| static void | mpsc_init (struct mpsc *q) |
| Initialize queue. | |
| static ALWAYS_INLINE void | mpsc_push (struct mpsc *q, struct mpsc_node *n) |
| Push a node. | |
| static struct mpsc_node * | mpsc_pop (struct mpsc *q) |
| Pop a node off of the list. | |
Multiple Producer Single Consumer (MPSC) Lockfree Queue API.
| #define MPSC_INIT | ( | symbol | ) |
#include <include/zephyr/sys/mpsc_lockfree.h>
Static initializer for a mpsc queue.
Since the queue is
| symbol | name of the queue |
| #define mpsc_ptr_get | ( | ptr | ) | atomic_ptr_get(&(ptr)) |
#include <include/zephyr/sys/mpsc_lockfree.h>
| #define mpsc_ptr_set | ( | ptr, | |
| val | |||
| ) | atomic_ptr_set(&(ptr), val) |
#include <include/zephyr/sys/mpsc_lockfree.h>
| #define mpsc_ptr_set_get | ( | ptr, | |
| val | |||
| ) | atomic_ptr_set(&(ptr), val) |
#include <include/zephyr/sys/mpsc_lockfree.h>
| typedef atomic_ptr_t mpsc_ptr_t |
#include <include/zephyr/sys/mpsc_lockfree.h>
|
inlinestatic |
#include <include/zephyr/sys/mpsc_lockfree.h>
Initialize queue.
| q | Queue to initialize or reset |
#include <include/zephyr/sys/mpsc_lockfree.h>
Pop a node off of the list.
| NULL | When no node is available |
| node | When node is available |
|
static |
#include <include/zephyr/sys/mpsc_lockfree.h>
Push a node.
| q | Queue to push the node to |
| n | Node to push into the queue |