Messages in this thread Patch in this message | | | From | Yury Norov <> | Subject | [PATCH] lib: bitmap_[empty,full]: remove code duplication | Date | Mon, 16 Mar 2015 20:56:39 +0300 |
| |
Function 'bitmap_empty' has it's own implementation. But it's clearly as simple as: "find_first_bit(src, nbits) == nbits" The same is true for 'bitmap_full'.
Underscored versions of 'bitmap_[empty,full]' are not needed anymore and so removed too.
Boot-tested on Core i7-2630QM.
--- include/linux/bitmap.h | 10 ++-------- lib/bitmap.c | 30 ------------------------------ 2 files changed, 2 insertions(+), 38 deletions(-)
diff --git a/include/linux/bitmap.h b/include/linux/bitmap.h index dbfbf49..a56e250 100644 --- a/include/linux/bitmap.h +++ b/include/linux/bitmap.h @@ -285,18 +285,12 @@ static inline int bitmap_subset(const unsigned long *src1, static inline int bitmap_empty(const unsigned long *src, unsigned nbits) { - if (small_const_nbits(nbits)) - return ! (*src & BITMAP_LAST_WORD_MASK(nbits)); - else - return __bitmap_empty(src, nbits); + return find_first_bit(src, nbits) == nbits; } static inline int bitmap_full(const unsigned long *src, unsigned int nbits) { - if (small_const_nbits(nbits)) - return ! (~(*src) & BITMAP_LAST_WORD_MASK(nbits)); - else - return __bitmap_full(src, nbits); + return find_first_zero_bit(src, nbits) == nbits; } static inline int bitmap_weight(const unsigned long *src, unsigned int nbits) diff --git a/lib/bitmap.c b/lib/bitmap.c index d456f4c1..64c0926 100644 --- a/lib/bitmap.c +++ b/lib/bitmap.c @@ -42,36 +42,6 @@ * for the best explanations of this ordering. */ -int __bitmap_empty(const unsigned long *bitmap, unsigned int bits) -{ - unsigned int k, lim = bits/BITS_PER_LONG; - for (k = 0; k < lim; ++k) - if (bitmap[k]) - return 0; - - if (bits % BITS_PER_LONG) - if (bitmap[k] & BITMAP_LAST_WORD_MASK(bits)) - return 0; - - return 1; -} -EXPORT_SYMBOL(__bitmap_empty); - -int __bitmap_full(const unsigned long *bitmap, unsigned int bits) -{ - unsigned int k, lim = bits/BITS_PER_LONG; - for (k = 0; k < lim; ++k) - if (~bitmap[k]) - return 0; - - if (bits % BITS_PER_LONG) - if (~bitmap[k] & BITMAP_LAST_WORD_MASK(bits)) - return 0; - - return 1; -} -EXPORT_SYMBOL(__bitmap_full); - int __bitmap_equal(const unsigned long *bitmap1, const unsigned long *bitmap2, unsigned int bits) { -- 2.1.0
| |