The ring buffer library implements ring (circular) buffer where bytes can be read and written independently. More...
Data Structures | |
struct | ringbuf |
Structure that holds the state of a ring buffer. More... | |
Files | |
file | ringbuf.h |
Header file for the ring buffer library. | |
Functions | |
void | ringbuf_init (struct ringbuf *r, uint8_t *a, uint8_t size_power_of_two) |
Initialize a ring buffer. | |
int | ringbuf_put (struct ringbuf *r, uint8_t c) |
Insert a byte into the ring buffer. | |
int | ringbuf_get (struct ringbuf *r) |
Get a byte from the ring buffer. | |
int | ringbuf_size (struct ringbuf *r) |
Get the size of a ring buffer. | |
int | ringbuf_elements (struct ringbuf *r) |
Get the number of elements currently in the ring buffer. |
The ring buffer library implements ring (circular) buffer where bytes can be read and written independently.
A ring buffer is particularly useful in device drivers where data can come in through interrupts.
int ringbuf_elements | ( | struct ringbuf * | r | ) |
int ringbuf_get | ( | struct ringbuf * | r | ) |
Get a byte from the ring buffer.
r | A pointer to a struct ringbuf to hold the state of the ring buffer |
This function removes a byte from the ring buffer. It is safe to call this function from an interrupt handler.
void ringbuf_init | ( | struct ringbuf * | r, | |
uint8_t * | a, | |||
uint8_t | size_power_of_two | |||
) |
Initialize a ring buffer.
r | A pointer to a struct ringbuf to hold the state of the ring buffer | |
a | A pointer to an array to hold the data in the buffer | |
size_power_of_two | The size of the ring buffer, which must be a power of two |
This function initiates a ring buffer. The data in the buffer is stored in an external array, to which a pointer must be supplied. The size of the ring buffer must be a power of two and cannot be larger than 128 bytes.
Definition at line 44 of file ringbuf.c.
Referenced by uart1_init().
int ringbuf_put | ( | struct ringbuf * | r, | |
uint8_t | c | |||
) |
Insert a byte into the ring buffer.
r | A pointer to a struct ringbuf to hold the state of the ring buffer | |
c | The byte to be written to the buffer |
This function inserts a byte into the ring buffer. It is safe to call this function from an interrupt handler.
Definition at line 53 of file ringbuf.c.
Referenced by serial_line_input_byte().