summaryrefslogtreecommitdiffstats
path: root/include/linux/sbitmap.h
diff options
context:
space:
mode:
authorJens Axboe <axboe@kernel.dk>2021-10-08 05:44:23 -0600
committerJens Axboe <axboe@kernel.dk>2021-10-18 14:40:42 -0600
commit1aec5e4a2962f7e0b3fb3e7308dd726be2472c26 (patch)
tree8a64f12d112fa47f632b9edfc73c873a6b001e47 /include/linux/sbitmap.h
parent5a72e899ceb465d731c413d57c6c12cdbf88303c (diff)
downloadlinux-1aec5e4a2962f7e0b3fb3e7308dd726be2472c26.tar.bz2
sbitmap: add helper to clear a batch of tags
sbitmap currently only supports clearing tags one-by-one, add a helper that allows the caller to pass in an array of tags to clear. Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'include/linux/sbitmap.h')
-rw-r--r--include/linux/sbitmap.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/include/linux/sbitmap.h b/include/linux/sbitmap.h
index e30b56023ead..4a6ff274335a 100644
--- a/include/linux/sbitmap.h
+++ b/include/linux/sbitmap.h
@@ -528,6 +528,17 @@ void sbitmap_queue_min_shallow_depth(struct sbitmap_queue *sbq,
void sbitmap_queue_clear(struct sbitmap_queue *sbq, unsigned int nr,
unsigned int cpu);
+/**
+ * sbitmap_queue_clear_batch() - Free a batch of allocated bits
+ * &struct sbitmap_queue.
+ * @sbq: Bitmap to free from.
+ * @offset: offset for each tag in array
+ * @tags: array of tags
+ * @nr_tags: number of tags in array
+ */
+void sbitmap_queue_clear_batch(struct sbitmap_queue *sbq, int offset,
+ int *tags, int nr_tags);
+
static inline int sbq_index_inc(int index)
{
return (index + 1) & (SBQ_WAIT_QUEUES - 1);