diff options
author | Anup Patel <anup.patel@wdc.com> | 2019-04-03 10:24:03 +0530 |
---|---|---|
committer | Atish Patra <atishp04@gmail.com> | 2019-04-03 13:48:38 -0700 |
commit | 9dc95021dbf29b96a84e0b7dca491f768aa0ef0d (patch) | |
tree | ec694df5cafb17c992f3107336cbddc33dff7815 /include/sbi/sbi_fifo.h | |
parent | 6dc1b0f6e2f895f220c284d9166205400fc98428 (diff) |
lib: More improvements to sbi_fifo
This patch does following improvements to sbi_fifo:
1. Use valid SBI_Exxxx error codes instead of -1
2. The sbi_fifo_is_full() and sbi_fifo_is_empty() did
not acquire qlock before accessing head and tail
hence fixed it
3. Added avail member for ease in debugging and simplifying
head/tail updates.
Due to above changes size of sbi_fifo changes from 48 bytes
to 56 bytes.
Signed-off-by: Anup Patel <anup.patel@wdc.com>
Diffstat (limited to 'include/sbi/sbi_fifo.h')
-rw-r--r-- | include/sbi/sbi_fifo.h | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/include/sbi/sbi_fifo.h b/include/sbi/sbi_fifo.h index ba9769b..1a59518 100644 --- a/include/sbi/sbi_fifo.h +++ b/include/sbi/sbi_fifo.h @@ -15,18 +15,22 @@ #include <sbi/sbi_types.h> struct sbi_fifo { - int head; - int tail; - spinlock_t qlock; - unsigned long entrysize; - unsigned long num_entries; + /* Static members of struct */ void *queue; + unsigned long entry_size; + unsigned long num_entries; + /* Dynamic members of struct protected by lock */ + spinlock_t qlock; + unsigned long avail; + unsigned long head; + unsigned long tail; }; 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, unsigned long entries, - unsigned long entrysize); +void sbi_fifo_init(struct sbi_fifo *fifo, void *queue_mem, + unsigned long entries, unsigned long entry_size); bool sbi_fifo_is_empty(struct sbi_fifo *fifo); bool sbi_fifo_is_full(struct sbi_fifo *fifo); + #endif |