A wait-free bounded FIFO of pointers for single producer/single consumer use. More...
Data Structures |
|
| struct | nrf_fifo_t |
|
FIFO data structure.
More...
|
|
Typedefs |
|
| typedef uint32_t(* | fifo_wait_fn )(void) |
|
Wait function for blocking enqueue/dequeue.
More...
|
|
| typedef void(* | fifo_flush_fn )(void *p_data) |
|
Flush function called on deinit.
More...
|
|
Functions |
|
| uint32_t | nrf_fifo_init ( nrf_fifo_t *p_fifo, uint32_t nmemb, fifo_wait_fn wait_fn, fifo_flush_fn flush_fn) |
|
Function for initializing the FIFO.
More...
|
|
| void | nrf_fifo_deinit ( nrf_fifo_t *p_fifo) |
|
Function for deinitializing the FIFO.
More...
|
|
| uint32_t | nrf_fifo_enq ( nrf_fifo_t *p_fifo, void *p_ctx, bool wait) |
|
Function for enqueuing an element on the FIFO.
More...
|
|
| uint32_t | nrf_fifo_deq ( nrf_fifo_t *p_fifo, void **pp_ctx, bool wait) |
|
Function for dequeuing an element from the FIFO.
More...
|
|
| bool | nrf_fifo_empty ( nrf_fifo_t *p_fifo) |
|
Function for checking if the FIFO is empty.
More...
|
|
| bool | nrf_fifo_full ( nrf_fifo_t *p_fifo) |
|
Function for checking if the FIFO is full.
More...
|
|
Detailed Description
A wait-free bounded FIFO of pointers for single producer/single consumer use.
This FIFO is safe to use in single producer/single consumer patterns. In addition, the following restrictions apply for init/deinit:
a) nrf_fifo_enq() and nrf_fifo_deq() may only be called after nrf_fifo_init() is called.
b) All calls to nrf_fifo_enq() and nrf_fifo_deq() must be finished and no new calls must be made before nrf_fifo_deinit() is called.
These restrictions must be handled by the user of the module, for instance by using a mutex.
Typedef Documentation
| typedef void(* fifo_flush_fn)(void *p_data) |
Flush function called on deinit.
On deinit, this function will be called with each remaining element in the FIFO as argument. This can be used to ensure that memory is deallocated properly.
- Parameters
-
[in] p_data Pointer to data that is flushed from FIFO.
| typedef uint32_t(* fifo_wait_fn)(void) |
Wait function for blocking enqueue/dequeue.
Should return NRF_SUCCESS as long as there are no errors while waiting.
Function Documentation
| void nrf_fifo_deinit | ( | nrf_fifo_t * | p_fifo | ) |
Function for deinitializing the FIFO.
Frees all memory allocated by this FIFO. All elements are removed. If a flush function was specified in nrf_fifo_init() , the function will be called for each remaining element in the FIFO.
- Parameters
-
[in,out] p_fifo The FIFO to deinitialize.
| uint32_t nrf_fifo_deq | ( | nrf_fifo_t * | p_fifo , |
| void ** | pp_ctx , | ||
| bool | wait | ||
| ) |
Function for dequeuing an element from the FIFO.
- Parameters
-
[in,out] p_fifo The FIFO to dequeue elements from. [out] pp_ctx Pointer to where the dequeued element should be stored. [in] wait If true, this function will block until the FIFO has elements for dequeuing. Any errors returned by this function will be propagated to the caller.
- Return values
-
NRF_SUCCESS if the element was queued. NRF_ERROR_NO_MEM if wait was set to false and no space was available.
| bool nrf_fifo_empty | ( | nrf_fifo_t * | p_fifo | ) |
Function for checking if the FIFO is empty.
- Parameters
-
[in] p_fifo The FIFO to check.
- Returns
- true if empty, false if not.
| uint32_t nrf_fifo_enq | ( | nrf_fifo_t * | p_fifo , |
| void * | p_ctx , | ||
| bool | wait | ||
| ) |
Function for enqueuing an element on the FIFO.
- Parameters
-
[in,out] p_fifo The FIFO to enqueue elements on. [in] p_ctx The pointer to enqueue. [in] wait If true, this function will block until the FIFO has available space. Any errors returned by this function will be propagated to the caller.
- Return values
-
NRF_SUCCESS if the element was queued. NRF_ERROR_NO_MEM if wait was set to false and no space was available.
| bool nrf_fifo_full | ( | nrf_fifo_t * | p_fifo | ) |
Function for checking if the FIFO is full.
- Parameters
-
[in] p_fifo The FIFO to check.
- Returns
- true if full, false if not.
| uint32_t nrf_fifo_init | ( | nrf_fifo_t * | p_fifo , |
| uint32_t | nmemb , | ||
| fifo_wait_fn | wait_fn , | ||
| fifo_flush_fn | flush_fn | ||
| ) |
Function for initializing the FIFO.
- Parameters
-
[out] p_fifo The FIFO to initialize. [in] nmemb The maximum number of elements in the FIFO. [in] wait_fn The wait function to use for blocking enqueue/dequeue. If NULL, the enq/deq functions will never block. [in] flush_fn The flush function to call on deinit. If NULL, the flush function will not be called.
- Return values
-
NRF_SUCCESS if fifo was initialized successfully.