+/**
+ * Create fifo of requested size
+ *
+ * Allocates fifo on current heap.
+ *
+ * @param size data size in bytes for fifo to be allocated. Will be
+ * rounded to the next highest power-of-two value.
+ * @return pointer to new fifo
+ */
+svm_fifo_t *svm_fifo_create (u32 size);
+/**
+ * Initialize fifo
+ *
+ * @param f fifo
+ * @param size size for fifo
+ */
+void svm_fifo_init (svm_fifo_t * f, u32 size);
+/**
+ * Initialize fifo chunks and rbtree
+ *
+ * @param f fifo
+ */
+void svm_fifo_init_chunks (svm_fifo_t * f);
+/**
+ * Allocate a fifo chunk on heap
+ *
+ * If the chunk is allocated on a fifo segment, this should be called
+ * with the segment's heap pushed.
+ *
+ * @param size chunk size in bytes. Will be rounded to the next highest
+ * power-of-two
+ * @return new chunk or 0 if alloc failed
+ */
+svm_fifo_chunk_t *svm_fifo_chunk_alloc (u32 size);
+/**
+ * Grow fifo size by adding chunk to chunk list
+ *
+ * If fifos are allocated on a segment, this should be called with
+ * the segment's heap pushed.
+ *
+ * @param f fifo to be extended
+ * @param c chunk or linked list of chunks to be added
+ */
+void svm_fifo_add_chunk (svm_fifo_t * f, svm_fifo_chunk_t * c);
+/**
+ * Request to reduce fifo size by amount of bytes
+ *
+ * Because the producer might be enqueuing data when this is called, the
+ * actual size update is only applied when producer tries to enqueue new
+ * data, unless @param try_shrink is set.
+ *
+ * @param f fifo
+ * @param len number of bytes to remove from fifo. The actual number
+ * of bytes to be removed will be less or equal to this
+ * value.
+ * @param try_shrink flg to indicate if it's safe to try to shrink fifo
+ * size. It should be set only if this is called by the
+ * producer of if the producer is not using the fifo
+ * @return actual length fifo size will be reduced by
+ */
+int svm_fifo_reduce_size (svm_fifo_t * f, u32 len, u8 try_shrink);
+/**
+ * Removes chunks that are after fifo end byte
+ *
+ * Needs to be called with segment heap pushed.
+ *
+ * @param f fifo
+ */
+svm_fifo_chunk_t *svm_fifo_collect_chunks (svm_fifo_t * f);
+/**
+ * Free fifo and associated state
+ *
+ * @param f fifo
+ */