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 heap 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 heap.

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 heap.

struct circular_buffer_t
#include <circular_buffer.h>

Public Members

char *buf_p
size_t size
size_t writepos
size_t readpos