diff options
Diffstat (limited to 'tools/include/linux/bitmap.h')
| -rw-r--r-- | tools/include/linux/bitmap.h | 26 | 
1 files changed, 26 insertions, 0 deletions
diff --git a/tools/include/linux/bitmap.h b/tools/include/linux/bitmap.h index 43c1c5021e4b..eef41d500e9e 100644 --- a/tools/include/linux/bitmap.h +++ b/tools/include/linux/bitmap.h @@ -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))  | 
