|
@@ -35,6 +35,32 @@ static inline void bitmap_zero(unsigned long *dst, int nbits)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static inline void bitmap_fill(unsigned long *dst, unsigned int nbits)
|
|
|
|
+{
|
|
|
|
+ unsigned int nlongs = BITS_TO_LONGS(nbits);
|
|
|
|
+ if (!small_const_nbits(nbits)) {
|
|
|
|
+ unsigned int len = (nlongs - 1) * sizeof(unsigned long);
|
|
|
|
+ memset(dst, 0xff, len);
|
|
|
|
+ }
|
|
|
|
+ dst[nlongs - 1] = BITMAP_LAST_WORD_MASK(nbits);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static inline int bitmap_empty(const unsigned long *src, unsigned nbits)
|
|
|
|
+{
|
|
|
|
+ if (small_const_nbits(nbits))
|
|
|
|
+ return ! (*src & BITMAP_LAST_WORD_MASK(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));
|
|
|
|
+
|
|
|
|
+ return find_first_zero_bit(src, nbits) == nbits;
|
|
|
|
+}
|
|
|
|
+
|
|
static inline int bitmap_weight(const unsigned long *src, int nbits)
|
|
static inline int bitmap_weight(const unsigned long *src, int nbits)
|
|
{
|
|
{
|
|
if (small_const_nbits(nbits))
|
|
if (small_const_nbits(nbits))
|