Zephyr API Documentation  2.7.0-rc2
A Scalable Open Source RTOS
mpsc_pbuf.h File Reference
#include <kernel.h>
#include <sys/mpsc_packet.h>
#include <string.h>
#include <stdint.h>
#include <stdbool.h>

Go to the source code of this file.

Data Structures

struct  mpsc_pbuf_buffer
 MPSC packet buffer structure. More...
 
struct  mpsc_pbuf_buffer_config
 MPSC packet buffer configuration. More...
 

Macros

#define MPSC_PBUF_SIZE_POW2   BIT(0)
 Flag indicating that buffer size is power of 2. More...
 
#define MPSC_PBUF_MODE_OVERWRITE   BIT(1)
 Flag indicating buffer full policy. More...
 

Typedefs

typedef uint32_t(* mpsc_pbuf_get_wlen) (union mpsc_pbuf_generic *packet)
 Callback prototype for getting length of a packet. More...
 
typedef void(* mpsc_pbuf_notify_drop) (struct mpsc_pbuf_buffer *buffer, union mpsc_pbuf_generic *packet)
 Callback called when packet is dropped. More...
 

Functions

void mpsc_pbuf_init (struct mpsc_pbuf_buffer *buffer, const struct mpsc_pbuf_buffer_config *config)
 Initnialize a packet buffer. More...
 
union mpsc_pbuf_genericmpsc_pbuf_alloc (struct mpsc_pbuf_buffer *buffer, size_t wlen, k_timeout_t timeout)
 Allocate a packet. More...
 
void mpsc_pbuf_commit (struct mpsc_pbuf_buffer *buffer, union mpsc_pbuf_generic *packet)
 Commit a packet. More...
 
void mpsc_pbuf_put_word (struct mpsc_pbuf_buffer *buffer, union mpsc_pbuf_generic word)
 Put single word packet into a buffer. More...
 
void mpsc_pbuf_put_word_ext (struct mpsc_pbuf_buffer *buffer, union mpsc_pbuf_generic word, void *data)
 Put a packet consisting of a word and a pointer.

  • Function is optimized for storing packet consisting of a word and a pointer. Note that 2 bits of a first word is used by the buffer.
More...
 
void mpsc_pbuf_put_data (struct mpsc_pbuf_buffer *buffer, uint32_t *data, size_t wlen)
 Put a packet into a buffer. More...
 
union mpsc_pbuf_genericmpsc_pbuf_claim (struct mpsc_pbuf_buffer *buffer)
 Claim the first pending packet. More...
 
void mpsc_pbuf_free (struct mpsc_pbuf_buffer *buffer, union mpsc_pbuf_generic *packet)
 Free a packet. More...
 
bool mpsc_pbuf_is_pending (struct mpsc_pbuf_buffer *buffer)
 Check if there are any message pending. More...