mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-26 19:00:25 +00:00
kfifo: provide kfifo_is_empty_spinlocked()
Provide two spinlocked versions of kfifo_is_empty() to be used with spinlocked variants of kfifo_in() and kfifo_out(). Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com> Acked-by: Stefani Seibold <stefani@seibold.net>
This commit is contained in:
parent
3f2e4c11e1
commit
5195a89e85
1 changed files with 31 additions and 0 deletions
|
@ -246,6 +246,37 @@ __kfifo_int_must_check_helper(int val)
|
|||
__tmpq->kfifo.in == __tmpq->kfifo.out; \
|
||||
})
|
||||
|
||||
/**
|
||||
* kfifo_is_empty_spinlocked - returns true if the fifo is empty using
|
||||
* a spinlock for locking
|
||||
* @fifo: address of the fifo to be used
|
||||
* @lock: spinlock to be used for locking
|
||||
*/
|
||||
#define kfifo_is_empty_spinlocked(fifo, lock) \
|
||||
({ \
|
||||
unsigned long __flags; \
|
||||
bool __ret; \
|
||||
spin_lock_irqsave(lock, __flags); \
|
||||
__ret = kfifo_is_empty(fifo); \
|
||||
spin_unlock_irqrestore(lock, __flags); \
|
||||
__ret; \
|
||||
})
|
||||
|
||||
/**
|
||||
* kfifo_is_empty_spinlocked_noirqsave - returns true if the fifo is empty
|
||||
* using a spinlock for locking, doesn't disable interrupts
|
||||
* @fifo: address of the fifo to be used
|
||||
* @lock: spinlock to be used for locking
|
||||
*/
|
||||
#define kfifo_is_empty_spinlocked_noirqsave(fifo, lock) \
|
||||
({ \
|
||||
bool __ret; \
|
||||
spin_lock(lock); \
|
||||
__ret = kfifo_is_empty(fifo); \
|
||||
spin_unlock(lock); \
|
||||
__ret; \
|
||||
})
|
||||
|
||||
/**
|
||||
* kfifo_is_full - returns true if the fifo is full
|
||||
* @fifo: address of the fifo to be used
|
||||
|
|
Loading…
Reference in a new issue