diff options
Diffstat (limited to 'include/qemu')
| -rw-r--r-- | include/qemu/fifo8.h | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/include/qemu/fifo8.h b/include/qemu/fifo8.h index d1d06754d8..4f768d4ee3 100644 --- a/include/qemu/fifo8.h +++ b/include/qemu/fifo8.h @@ -63,6 +63,17 @@ void fifo8_push_all(Fifo8 *fifo, const uint8_t *data, uint32_t num); uint8_t fifo8_pop(Fifo8 *fifo); /** + * fifo8_peek: + * @fifo: fifo to peek from + * + * Peek the data byte at the current head of the FIFO. Clients are responsible + * for checking for emptyness using fifo8_is_empty(). + * + * Returns: The peeked data byte. + */ +uint8_t fifo8_peek(Fifo8 *fifo); + +/** * fifo8_pop_buf: * @fifo: FIFO to pop from * @dest: the buffer to write the data into (can be NULL) @@ -77,6 +88,20 @@ uint8_t fifo8_pop(Fifo8 *fifo); uint32_t fifo8_pop_buf(Fifo8 *fifo, uint8_t *dest, uint32_t destlen); /** + * fifo8_peek_buf: + * @fifo: FIFO to read from + * @dest: the buffer to write the data into (can be NULL) + * @destlen: size of @dest and maximum number of bytes to peek + * + * Peek a number of elements from the FIFO up to a maximum of @destlen. + * The peeked data is copied into the @dest buffer. + * Care is taken when the data wraps around in the ring buffer. + * + * Returns: number of bytes peeked. + */ +uint32_t fifo8_peek_buf(Fifo8 *fifo, uint8_t *dest, uint32_t destlen); + +/** * fifo8_pop_bufptr: * @fifo: FIFO to pop from * @max: maximum number of bytes to pop |