73 #if defined HAL_IOBUF_LIMIT_SIZE
74 #if HAL_IOBUF_LIMIT_SIZE <= 8
75 typedef uint_fast8_t iobuf_size_t;
76 #elif HAL_IOBUF_LIMIT_SIZE <= 16
77 typedef uint_fast16_t iobuf_size_t;
79 typedef uint_fast32_t iobuf_size_t;
82 typedef size_t iobuf_size_t;
114 IOBuf
IOBUF_Create(iobuf_size_t elem_size, iobuf_size_t max_elem_count);
160 IOBuf
IOBUF_Init(
void* buf_ptr, iobuf_size_t buf_size, iobuf_size_t elem_size);
172 iobuf_size_t
IOBUF_Read(IOBuf iobuf,
void* data, iobuf_size_t elem_count);
183 iobuf_size_t
IOBUF_Write(IOBuf iobuf,
const void* data, iobuf_size_t elem_count);
212 iobuf_size_t
IOBUF_ReadNextFragment(IOBuf iobuf, iobuf_size_t fragment_size,
void** next_fragment_ptr, iobuf_size_t* next_fragment_size);
243 iobuf_size_t
IOBUF_WriteNextFragment(IOBuf iobuf, iobuf_size_t fragment_size,
void** next_fragment_ptr, iobuf_size_t* next_fragment_size);
283 iobuf_size_t
IOBUF_Peek(IOBuf iobuf,
void* data, iobuf_size_t elem_count);
299 iobuf_size_t
IOBUF_Move(IOBuf dst_iobuf, IOBuf src_iobuf, iobuf_size_t elem_count);
310 iobuf_size_t
IOBUF_Remove(IOBuf iobuf, iobuf_size_t elem_count);
316 #define IOBUF_DECLARE(name, count, size) \
317 static uint8_t name##_mempool[(count)*(size)]; \
318 static IOBufDesc name = { 0, size, count, &name##_mempool, &name##_mempool, &name##_mempool };
iobuf_size_t IOBUF_Write(IOBuf iobuf, const void *data, iobuf_size_t elem_count)
iobuf_size_t IOBUF_Read(IOBuf iobuf, void *data, iobuf_size_t elem_count)
void * mem_ptr
Pointer to the actual buffer pool memory area.
Definition: hal_iobuf.h:97
iobuf_size_t elem_size
Size of the single element (in bytes)
Definition: hal_iobuf.h:93
IOBuf IOBUF_Create(iobuf_size_t elem_size, iobuf_size_t max_elem_count)
iobuf_size_t IOBUF_ReadNextFragment(IOBuf iobuf, iobuf_size_t fragment_size, void **next_fragment_ptr, iobuf_size_t *next_fragment_size)
void * write_ptr
Pointer to the are where next element will be written.
Definition: hal_iobuf.h:101
IOBuf IOBUF_Destroy(IOBuf iobuf)
iobuf_size_t elem_count
Number of elements stored in a a buffer.
Definition: hal_iobuf.h:91
iobuf_size_t IOBUF_GetCount(IOBuf iobuf)
void * read_ptr
Pointer to the next element to read.
Definition: hal_iobuf.h:99
void IOBUF_Clear(IOBuf iobuf)
iobuf_size_t IOBUF_Move(IOBuf dst_iobuf, IOBuf src_iobuf, iobuf_size_t elem_count)
iobuf_size_t IOBUF_ReadFast(IOBuf iobuf, void *elem)
IOBuf IOBUF_Init(void *buf_ptr, iobuf_size_t buf_size, iobuf_size_t elem_size)
iobuf_size_t IOBUF_Peek(IOBuf iobuf, void *data, iobuf_size_t elem_count)
iobuf_size_t IOBUF_GetSpace(IOBuf iobuf)
iobuf_size_t max_elem_count
Maximum number of elements that the buffer can store (logical size of the buffer) ...
Definition: hal_iobuf.h:95
iobuf_size_t IOBUF_Remove(IOBuf iobuf, iobuf_size_t elem_count)
iobuf_size_t IOBUF_GetSize(IOBuf iobuf)
Definition: hal_iobuf.h:88
iobuf_size_t IOBUF_WriteFast(IOBuf iobuf, const void *elem)
iobuf_size_t IOBUF_WriteNextFragment(IOBuf iobuf, iobuf_size_t fragment_size, void **next_fragment_ptr, iobuf_size_t *next_fragment_size)