From ff7d245b86daa36aa36147022fa583e79ffe25cc Mon Sep 17 00:00:00 2001 From: Yu-Chien Peter Lin Date: Wed, 11 Mar 2026 20:51:15 +0800 Subject: [PATCH] include: sbi_bitmap: add bitmap_empty() function Add bitmap_empty() to check if bitmap has no bits set. Unlike bitmap_weight() which calls sbi_popcount() on every word, bitmap_empty() uses simple non-zero comparisons with early exit. Signed-off-by: Yu-Chien Peter Lin Reviewed-by: Anup Patel Link: https://lore.kernel.org/r/20260311125116.1401002-1-peter.lin@sifive.com Signed-off-by: Anup Patel --- include/sbi/sbi_bitmap.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/include/sbi/sbi_bitmap.h b/include/sbi/sbi_bitmap.h index 596bcc7d..80d3fe3b 100644 --- a/include/sbi/sbi_bitmap.h +++ b/include/sbi/sbi_bitmap.h @@ -143,4 +143,20 @@ static inline int bitmap_weight(const unsigned long *src, int nbits) return res; } +static inline bool bitmap_empty(const unsigned long *src, int nbits) +{ + if (nbits == 0) + return true; + + if (small_const_nbits(nbits)) + return !(*src & BITMAP_LAST_WORD_MASK(nbits)); + else { + size_t i, len = BITS_TO_LONGS(nbits); + for (i = 0; i < len - 1; i++) + if (src[i]) + return false; + return !(src[len - 1] & BITMAP_LAST_WORD_MASK(nbits)); + } +} + #endif