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:
Hans Petter Selasky 2020-07-10 12:06:18 +00:00
parent d2890eeea1
commit 127d8cfafb
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=363078

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)