fifo8 header

The documentation of QEMU’s qemu/fifo8.h header.

void fifo8_create(Fifo8 * fifo, uint32_t capacity)

Parameters

Fifo8 * fifo
struct Fifo8 to initialise with new FIFO
uint32_t capacity
capacity of the newly created FIFO

Description

Create a FIFO of the specified size. Clients should call fifo8_destroy() when finished using the fifo. The FIFO is initially empty.

void fifo8_destroy(Fifo8 * fifo)

Parameters

Fifo8 * fifo
FIFO to cleanup

Description

Cleanup a FIFO created with fifo8_create(). Frees memory created for FIFO storage. The FIFO is no longer usable after this has been called.

void fifo8_push(Fifo8 * fifo, uint8_t data)

Parameters

Fifo8 * fifo
FIFO to push to
uint8_t data
data byte to push

Description

Push a data byte to the FIFO. Behaviour is undefined if the FIFO is full. Clients are responsible for checking for fullness using fifo8_is_full().

void fifo8_push_all(Fifo8 * fifo, const uint8_t * data, uint32_t num)

Parameters

Fifo8 * fifo
FIFO to push to
const uint8_t * data
data to push
uint32_t num
undescribed

Description

Push a byte array to the FIFO. Behaviour is undefined if the FIFO is full. Clients are responsible for checking the space left in the FIFO using fifo8_num_free().

uint8_t fifo8_pop(Fifo8 * fifo)

Parameters

Fifo8 * fifo
fifo to pop from

Description

Pop a data byte from the FIFO. Behaviour is undefined if the FIFO is empty. Clients are responsible for checking for emptyness using fifo8_is_empty().

Return

The popped data byte.

const uint8_t * fifo8_pop_buf(Fifo8 * fifo, uint32_t max, uint32_t * num)

Parameters

Fifo8 * fifo
FIFO to pop from
uint32_t max
maximum number of bytes to pop
uint32_t * num
actual number of returned bytes

Description

Pop a number of elements from the FIFO up to a maximum of max. The buffer containing the popped data is returned. This buffer points directly into the FIFO backing store and data is invalidated once any of the fifo8_* APIs are called on the FIFO.

The function may return fewer bytes than requested when the data wraps around in the ring buffer; in this case only a contiguous part of the data is returned.

The number of valid bytes returned is populated in *num; will always return at least 1 byte. max must not be 0 or greater than the number of bytes in the FIFO.

Clients are responsible for checking the availability of requested data using fifo8_num_used().

Return

A pointer to popped data.

void fifo8_reset(Fifo8 * fifo)

Parameters

Fifo8 * fifo
FIFO to reset

Description

Reset a FIFO. All data is discarded and the FIFO is emptied.

bool fifo8_is_empty(Fifo8 * fifo)

Parameters

Fifo8 * fifo
FIFO to check

Description

Check if a FIFO is empty.

Return

True if the fifo is empty, false otherwise.

bool fifo8_is_full(Fifo8 * fifo)

Parameters

Fifo8 * fifo
FIFO to check

Description

Check if a FIFO is full.

Return

True if the fifo is full, false otherwise.

uint32_t fifo8_num_free(Fifo8 * fifo)

Parameters

Fifo8 * fifo
FIFO to check

Description

Return the number of free bytes in the FIFO.

Return

Number of free bytes.

uint32_t fifo8_num_used(Fifo8 * fifo)

Parameters

Fifo8 * fifo
FIFO to check

Description

Return the number of used bytes in the FIFO.

Return

Number of used bytes.