lib/bitmap.c: bitmap_[empty,full]: remove code duplication
bitmap_empty() has its own implementation. But it's clearly as simple as: find_first_bit(src, nbits) == nbits The same is true for 'bitmap_full'. Signed-off-by: Yury Norov <yury.norov@gmail.com> Cc: George Spelvin <linux@horizon.com> Cc: Alexey Klimov <klimov.linux@gmail.com> Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
d48502eacd
commit
2afe27c718
@ -283,16 +283,16 @@ static inline int bitmap_empty(const unsigned long *src, unsigned nbits)
|
|||||||
{
|
{
|
||||||
if (small_const_nbits(nbits))
|
if (small_const_nbits(nbits))
|
||||||
return ! (*src & BITMAP_LAST_WORD_MASK(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)
|
static inline int bitmap_full(const unsigned long *src, unsigned int nbits)
|
||||||
{
|
{
|
||||||
if (small_const_nbits(nbits))
|
if (small_const_nbits(nbits))
|
||||||
return ! (~(*src) & BITMAP_LAST_WORD_MASK(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)
|
static inline int bitmap_weight(const unsigned long *src, unsigned int nbits)
|
||||||
|
30
lib/bitmap.c
30
lib/bitmap.c
@ -42,36 +42,6 @@
|
|||||||
* for the best explanations of this ordering.
|
* 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,
|
int __bitmap_equal(const unsigned long *bitmap1,
|
||||||
const unsigned long *bitmap2, unsigned int bits)
|
const unsigned long *bitmap2, unsigned int bits)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user