]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - tools/include/linux/bitmap.h
Merge tag 'platform-drivers-x86-v4.10-1' of git://git.infradead.org/users/dvhart...
[karo-tx-linux.git] / tools / include / linux / bitmap.h
index 43c1c5021e4bc841084b20a1f89d6ce0f2b6e25d..eef41d500e9e5497b21532980bc1be180a02eefe 100644 (file)
@@ -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)
 {
        if (small_const_nbits(nbits))