/**
* 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
*
* @return number of out of order segments
*/
u32 svm_fifo_n_ooo_segments (svm_fifo_t * f);
-/*
+/**
* First out-of-order segment for fifo
*
* @param f fifo
* @return first out-of-order segment for fifo
*/
ooo_segment_t *svm_fifo_first_ooo_segment (svm_fifo_t * f);
+/**
+ * Check if fifo is sane. Debug only.
+ *
+ * @param f fifo
+ * @return 1 if sane, 0 otherwise
+ */
+u8 svm_fifo_is_sane (svm_fifo_t * f);
format_function_t format_svm_fifo;
/**
{
u32 head, tail;
f_load_head_tail_prod (f, &head, &tail);
- return tail > head ? f->size - tail : f_free_count (f, head, tail);
+ return tail >= head ? f->size - tail : f_free_count (f, head, tail);
}
static inline u8 *