Implement the bitmap_subset() function in the LinuxKPI. This function

checks if the bitmap pointed to by the first argument is a subset of
the bitmap pointed to by the second argument. The function returns one
on success and zero on failure.

MFC after:		1 week
Sponsored by:		Mellanox Technologies
This commit is contained in:
hselasky 2020-07-10 12:06:18 +00:00
parent dee503b4a7
commit 7ecaecc7c2

View File

@ -244,6 +244,28 @@ bitmap_equal(const unsigned long *pa,
return (1);
}
static inline int
bitmap_subset(const unsigned long *pa,
const unsigned long *pb, unsigned size)
{
const unsigned end = BIT_WORD(size);
const unsigned tail = size & (BITS_PER_LONG - 1);
unsigned i;
for (i = 0; i != end; i++) {
if (pa[i] & ~pb[i])
return (0);
}
if (tail) {
const unsigned long mask = BITMAP_LAST_WORD_MASK(tail);
if (pa[end] & ~pb[end] & mask)
return (0);
}
return (1);
}
static inline void
bitmap_complement(unsigned long *dst, const unsigned long *src,
const unsigned int size)