|
Zephyr Project API 4.0.0
A Scalable Open Source RTOS
|
Multi producer, single consumer packet buffer API. More...
Modules | |
| MPSC (Multi producer, single consumer) packet header | |
| Multi producer, single consumer packet header. | |
| MPSC packet buffer flags | |
Data Structures | |
| struct | mpsc_pbuf_buffer |
| MPSC packet buffer structure. More... | |
| struct | mpsc_pbuf_buffer_config |
| MPSC packet buffer configuration. More... | |
Typedefs | |
| typedef uint32_t(* | mpsc_pbuf_get_wlen) (const union mpsc_pbuf_generic *packet) |
| Callback prototype for getting length of a packet. | |
| typedef void(* | mpsc_pbuf_notify_drop) (const struct mpsc_pbuf_buffer *buffer, const union mpsc_pbuf_generic *packet) |
| Callback called when packet is dropped. | |
Functions | |
| void | mpsc_pbuf_init (struct mpsc_pbuf_buffer *buffer, const struct mpsc_pbuf_buffer_config *config) |
| Initialize a packet buffer. | |
| union mpsc_pbuf_generic * | mpsc_pbuf_alloc (struct mpsc_pbuf_buffer *buffer, size_t wlen, k_timeout_t timeout) |
| Allocate a packet. | |
| void | mpsc_pbuf_commit (struct mpsc_pbuf_buffer *buffer, union mpsc_pbuf_generic *packet) |
| Commit a packet. | |
| void | mpsc_pbuf_put_word (struct mpsc_pbuf_buffer *buffer, const union mpsc_pbuf_generic word) |
| Put single word packet into a buffer. | |
| void | mpsc_pbuf_put_word_ext (struct mpsc_pbuf_buffer *buffer, const union mpsc_pbuf_generic word, const void *data) |
| Put a packet consisting of a word and a pointer. | |
| void | mpsc_pbuf_put_data (struct mpsc_pbuf_buffer *buffer, const uint32_t *data, size_t wlen) |
| Put a packet into a buffer. | |
| const union mpsc_pbuf_generic * | mpsc_pbuf_claim (struct mpsc_pbuf_buffer *buffer) |
| Claim the first pending packet. | |
| void | mpsc_pbuf_free (struct mpsc_pbuf_buffer *buffer, const union mpsc_pbuf_generic *packet) |
| Free a packet. | |
| bool | mpsc_pbuf_is_pending (struct mpsc_pbuf_buffer *buffer) |
| Check if there are any message pending. | |
| void | mpsc_pbuf_get_utilization (struct mpsc_pbuf_buffer *buffer, uint32_t *size, uint32_t *now) |
| Get current memory utilization. | |
| int | mpsc_pbuf_get_max_utilization (struct mpsc_pbuf_buffer *buffer, uint32_t *max) |
| Get maximum memory utilization. | |
Multi producer, single consumer packet buffer API.
| typedef uint32_t(* mpsc_pbuf_get_wlen) (const union mpsc_pbuf_generic *packet) |
#include <include/zephyr/sys/mpsc_pbuf.h>
Callback prototype for getting length of a packet.
| packet | User packet. |
| typedef void(* mpsc_pbuf_notify_drop) (const struct mpsc_pbuf_buffer *buffer, const union mpsc_pbuf_generic *packet) |
#include <include/zephyr/sys/mpsc_pbuf.h>
Callback called when packet is dropped.
| buffer | Packet buffer. |
| packet | Packet that is being dropped. |
| union mpsc_pbuf_generic * mpsc_pbuf_alloc | ( | struct mpsc_pbuf_buffer * | buffer, |
| size_t | wlen, | ||
| k_timeout_t | timeout | ||
| ) |
#include <include/zephyr/sys/mpsc_pbuf.h>
Allocate a packet.
If a buffer is configured to overwrite mode then if there is no space to allocate a new buffer, oldest packets are dropped. Otherwise allocation fails and null pointer is returned.
| buffer | Buffer. |
| wlen | Number of words to allocate. |
| timeout | Timeout. If called from thread context it will pend for given timeout if packet cannot be allocated before dropping the oldest or returning null. |
| const union mpsc_pbuf_generic * mpsc_pbuf_claim | ( | struct mpsc_pbuf_buffer * | buffer | ) |
#include <include/zephyr/sys/mpsc_pbuf.h>
Claim the first pending packet.
| buffer | Buffer. |
| void mpsc_pbuf_commit | ( | struct mpsc_pbuf_buffer * | buffer, |
| union mpsc_pbuf_generic * | packet | ||
| ) |
#include <include/zephyr/sys/mpsc_pbuf.h>
Commit a packet.
| buffer | Buffer. |
| packet | Pointer to a packet allocated by mpsc_pbuf_alloc. |
| void mpsc_pbuf_free | ( | struct mpsc_pbuf_buffer * | buffer, |
| const union mpsc_pbuf_generic * | packet | ||
| ) |
| int mpsc_pbuf_get_max_utilization | ( | struct mpsc_pbuf_buffer * | buffer, |
| uint32_t * | max | ||
| ) |
#include <include/zephyr/sys/mpsc_pbuf.h>
Get maximum memory utilization.
| [in,out] | buffer | Buffer. |
| [out] | max | Maximum buffer usage in bytes. |
retval 0 if utilization data collected successfully. retval -ENOTSUP if Collecting utilization data is not supported.
| void mpsc_pbuf_get_utilization | ( | struct mpsc_pbuf_buffer * | buffer, |
| uint32_t * | size, | ||
| uint32_t * | now | ||
| ) |
#include <include/zephyr/sys/mpsc_pbuf.h>
Get current memory utilization.
| [in,out] | buffer | Buffer. |
| [out] | size | Buffer size in bytes. |
| [out] | now | Current buffer usage in bytes. |
| void mpsc_pbuf_init | ( | struct mpsc_pbuf_buffer * | buffer, |
| const struct mpsc_pbuf_buffer_config * | config | ||
| ) |
#include <include/zephyr/sys/mpsc_pbuf.h>
Initialize a packet buffer.
| buffer | Buffer. |
| config | Configuration. |
| bool mpsc_pbuf_is_pending | ( | struct mpsc_pbuf_buffer * | buffer | ) |
#include <include/zephyr/sys/mpsc_pbuf.h>
Check if there are any message pending.
| buffer | Buffer. |
| true | if pending. |
| false | if no message is pending. |
| void mpsc_pbuf_put_data | ( | struct mpsc_pbuf_buffer * | buffer, |
| const uint32_t * | data, | ||
| size_t | wlen | ||
| ) |
#include <include/zephyr/sys/mpsc_pbuf.h>
Put a packet into a buffer.
Copy data into a buffer. Note that 2 bits of a first word is used by the buffer.
| buffer | Buffer. |
| data | First word of data must contain MPSC_PBUF_HDR with valid bit set. |
| wlen | Packet size in words. |
| void mpsc_pbuf_put_word | ( | struct mpsc_pbuf_buffer * | buffer, |
| const union mpsc_pbuf_generic | word | ||
| ) |
#include <include/zephyr/sys/mpsc_pbuf.h>
Put single word packet into a buffer.
Function is optimized for storing a packet which fit into a single word. Note that 2 bits of that word is used by the buffer.
| buffer | Buffer. |
| word | Packet content consisting of MPSC_PBUF_HDR with valid bit set and data on remaining bits. |
| void mpsc_pbuf_put_word_ext | ( | struct mpsc_pbuf_buffer * | buffer, |
| const union mpsc_pbuf_generic | word, | ||
| const void * | data | ||
| ) |
#include <include/zephyr/sys/mpsc_pbuf.h>
Put a packet consisting of a word and a pointer.
| buffer | Buffer. |
| word | First word of a packet consisting of MPSC_PBUF_HDR with valid bit set and data on remaining bits. |
| data | User data. |