|
Zephyr API Documentation
3.7.0
A Scalable Open Source RTOS
|
Packed buffer API. More...
Data Structures | |
| struct | pbuf_cfg |
| Control block of packet buffer. More... | |
| struct | pbuf_data |
| Data block of the packed buffer. More... | |
| struct | pbuf |
| Scure packed buffer. More... | |
Macros | |
| #define | PBUF_PACKET_LEN_SZ sizeof(uint32_t) |
| Size of packet length field. | |
| #define | PBUF_CFG_INIT(mem_addr, size, dcache_align) |
| Macro for configuration initialization. | |
| #define | PBUF_HEADER_OVERHEAD(dcache_align) (MAX(dcache_align, _PBUF_IDX_SIZE) + _PBUF_IDX_SIZE) |
| Macro calculates memory overhead taken by the header in shared memory. | |
| #define | PBUF_DEFINE(name, mem_addr, size, dcache_align) |
| Statically define and initialize pbuf. | |
Functions | |
| int | pbuf_init (struct pbuf *pb) |
| Initialize the packet buffer. | |
| int | pbuf_write (struct pbuf *pb, const char *buf, uint16_t len) |
| Write specified amount of data to the packet buffer. | |
| int | pbuf_read (struct pbuf *pb, char *buf, uint16_t len) |
| Read specified amount of data from the packet buffer. | |
Packed buffer API.
| #define PBUF_CFG_INIT | ( | mem_addr, | |
| size, | |||
| dcache_align | |||
| ) |
#include <zephyr/ipc/pbuf.h>
Macro for configuration initialization.
It is recommended to use this macro to initialize packed buffer configuration.
| mem_addr | Memory address for pbuf. |
| size | Size of the memory. |
| dcache_align | Data cache alignment. |
| #define PBUF_DEFINE | ( | name, | |
| mem_addr, | |||
| size, | |||
| dcache_align | |||
| ) |
#include <zephyr/ipc/pbuf.h>
Statically define and initialize pbuf.
| name | Name of the pbuf. |
| mem_addr | Memory address for pbuf. |
| size | Size of the memory. |
| dcache_align | Data cache line size. |
| #define PBUF_HEADER_OVERHEAD | ( | dcache_align | ) | (MAX(dcache_align, _PBUF_IDX_SIZE) + _PBUF_IDX_SIZE) |
#include <zephyr/ipc/pbuf.h>
Macro calculates memory overhead taken by the header in shared memory.
It contains the read index, write index and padding.
| dcache_align | Data cache alignment. |
#include <zephyr/ipc/pbuf.h>
Size of packet length field.
| int pbuf_init | ( | struct pbuf * | pb | ) |
#include <zephyr/ipc/pbuf.h>
Initialize the packet buffer.
This function initializes the packet buffer based on provided configuration. If the configuration is incorrect, the function will return error.
It is recommended to use PBUF_DEFINE macro for build time initialization.
| pb | Pointer to the packed buffer containing configuration and data. Configuration has to be fixed before the initialization. |
| 0 | on success. |
| -EINVAL | when the input parameter is incorrect. |
#include <zephyr/ipc/pbuf.h>
Read specified amount of data from the packet buffer.
Single read allows to read the message send by the single write. The provided p buf must be big enough to store the whole message.
| pb | A buffer from which data will be read. |
| buf | Data pointer to which read data will be written. If NULL, len of stored message is returned. |
| len | Number of bytes to be read from the buffer. |
| int | Bytes read, negative error code on fail. Bytes to be read, if buf == NULL. -EINVAL, if any of input parameter is incorrect. -ENOMEM, if message can not fit in provided buf. -EAGAIN, if not whole message is ready yet. |
#include <zephyr/ipc/pbuf.h>
Write specified amount of data to the packet buffer.
This function call writes specified amount of data to the packet buffer if the buffer will fit the data.
| pb | A buffer to which to write. |
| buf | Pointer to the data to be written to the buffer. |
| len | Number of bytes to be written to the buffer. Must be positive. |
| int | Number of bytes written, negative error code on fail. -EINVAL, if any of input parameter is incorrect. -ENOMEM, if len is bigger than the buffer can fit. |