summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAtish Patra <atish.patra@wdc.com>2019-04-05 03:10:12 +0300
committerAnup Patel <anup@brainfault.org>2019-04-10 13:16:35 +0300
commit110eef44f08635076fe201c6516819055b8762cc (patch)
tree442c92218e4a2f010d24a18efa587401d9c4238f /include
parent54f31e82093969eaca9f7ebab06c92fa044dd076 (diff)
downloadopensbi-110eef44f08635076fe201c6516819055b8762cc.tar.xz
lib: Provide a lock enabled iteration of fifo.
Implement a lock enabled iteration for fifo so that caller can determine if next entry can be skipped or any existing entries in fifo can be updated before enqueue. Signed-off-by: Atish Patra <atish.patra@wdc.com>
Diffstat (limited to 'include')
-rw-r--r--include/sbi/sbi_fifo.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/include/sbi/sbi_fifo.h b/include/sbi/sbi_fifo.h
index 3754a5e..f9e2ca9 100644
--- a/include/sbi/sbi_fifo.h
+++ b/include/sbi/sbi_fifo.h
@@ -23,11 +23,21 @@ struct sbi_fifo {
u16 tail;
};
+enum sbi_fifo_inplace_update_types {
+ SBI_FIFO_SKIP,
+ SBI_FIFO_UPDATED,
+ SBI_FIFO_RESET,
+ SBI_FIFO_UNCHANGED,
+};
+
int sbi_fifo_dequeue(struct sbi_fifo *fifo, void *data);
int sbi_fifo_enqueue(struct sbi_fifo *fifo, void *data);
void sbi_fifo_init(struct sbi_fifo *fifo, void *queue_mem,
u16 entries, u16 entry_size);
bool sbi_fifo_is_empty(struct sbi_fifo *fifo);
bool sbi_fifo_is_full(struct sbi_fifo *fifo);
+int sbi_fifo_inplace_update(struct sbi_fifo *fifo, void *in,
+ int (*fptr) (void *in, void *data));
+u16 sbi_fifo_avail(struct sbi_fifo *fifo);
#endif