diff options
author | Atish Patra <atish.patra@wdc.com> | 2019-04-05 03:10:12 +0300 |
---|---|---|
committer | Anup Patel <anup@brainfault.org> | 2019-04-10 13:16:35 +0300 |
commit | 110eef44f08635076fe201c6516819055b8762cc (patch) | |
tree | 442c92218e4a2f010d24a18efa587401d9c4238f /include | |
parent | 54f31e82093969eaca9f7ebab06c92fa044dd076 (diff) | |
download | opensbi-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.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 |