8.3. circular_buffer
— Circular buffer¶
Source code: src/collections/circular_buffer.h, src/collections/circular_buffer.c
Test code: tst/collections/circular_buffer/main.c
Test coverage: src/collections/circular_buffer.c
Functions
-
int
circular_buffer_init
(struct circular_buffer_t *self_p, void *buf_p, size_t size)¶ Initialize given circular buffer.
- Return
- zero(0) or negative error code.
- Parameters
self_p
: Circular buffer to initialize.buf_p
: Memory buffer.size
: Size of the memory buffer.
-
ssize_t
circular_buffer_write
(struct circular_buffer_t *self_p, const void *buf_p, size_t size)¶ Write data to given circular buffer.
- Return
- Number of bytes written or negative error code.
- Parameters
self_p
: Circular buffer.buf_p
: Memory buffer to write.size
: Size of the memory buffer.
-
ssize_t
circular_buffer_read
(struct circular_buffer_t *self_p, void *buf_p, size_t size)¶ Read data from given circular buffer.
- Return
- Number of bytes read or negative error code. The buffer is empty if zero(0) is returned.
- Parameters
self_p
: Circular buffer to free to.buf_p
: Memory buffer to read into.size
: Size of the memory buffer.
-
ssize_t
circular_buffer_used_size
(struct circular_buffer_t *self_p)¶ Returns the number of used bytes in given circular buffer.
- Return
- Number of used bytes.
- Parameters
self_p
: Circular buffer.
-
ssize_t
circular_buffer_unused_size
(struct circular_buffer_t *self_p)¶ Returns the number of unused bytes in given circular buffer.
- Return
- Number of unused bytes.
- Parameters
self_p
: Circular buffer.
-
ssize_t
circular_buffer_skip_front
(struct circular_buffer_t *self_p, size_t size)¶ Skip given number of written bytes at the front of the buffer.
- Return
- Number of skipped bytes or negative error code.
- Parameters
self_p
: Circular buffer.size
: Number of bytes to skip.
-
ssize_t
circular_buffer_reverse_skip_back
(struct circular_buffer_t *self_p, size_t size)¶ Skip given number of written bytes at the back of the buffer.
- Return
- Number of skipped bytes or negative error code.
- Parameters
self_p
: Circular buffer.size
: Number of bytes to skip.
-
ssize_t
circular_buffer_array_one
(struct circular_buffer_t *self_p, void **buf_pp, size_t size)¶ Get a pointer to the next byte to read from the buffer. Use
circular_buffer_array_two()
to get the second array, if there is a wrap around.- Return
- Number of bytes in array or negative error code.
- Parameters
self_p
: Circular buffer.buf_pp
: A poitner to the start of the array. Only valid if the return value is greater than zero(0).size
: Number of bytes asked for.
-
ssize_t
circular_buffer_array_two
(struct circular_buffer_t *self_p, void **buf_pp, size_t size)¶ Get a pointer to the next byte to read from the buffer, following a wrap around.
- Return
- Number of bytes in array or negative error code.
- Parameters
self_p
: Circular buffer.buf_pp
: A poitner to the start of the array. Only valid if the return value is greater than zero(0).size
: Number of bytes asked for.
-
struct
circular_buffer_t
¶ - #include <circular_buffer.h>