diff options
author | Atish Patra <atish.patra@wdc.com> | 2019-04-04 17:10:12 -0700 |
---|---|---|
committer | Anup Patel <anup@brainfault.org> | 2019-04-10 15:46:35 +0530 |
commit | 110eef44f08635076fe201c6516819055b8762cc (patch) | |
tree | 442c92218e4a2f010d24a18efa587401d9c4238f /include/sbi/sbi_fifo.h | |
parent | 54f31e82093969eaca9f7ebab06c92fa044dd076 (diff) |
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/sbi/sbi_fifo.h')
-rw-r--r-- | include/sbi/sbi_fifo.h | 10 |
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 |