svn commit: r363078 - head/sys/compat/linuxkpi/common/include/linux

Hans Petter Selasky hselasky at FreeBSD.org
Fri Jul 10 12:06:19 UTC 2020


Author: hselasky
Date: Fri Jul 10 12:06:18 2020
New Revision: 363078
URL: https://svnweb.freebsd.org/changeset/base/363078

Log:
  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

Modified:
  head/sys/compat/linuxkpi/common/include/linux/bitmap.h

Modified: head/sys/compat/linuxkpi/common/include/linux/bitmap.h
==============================================================================
--- head/sys/compat/linuxkpi/common/include/linux/bitmap.h	Fri Jul 10 11:27:54 2020	(r363077)
+++ head/sys/compat/linuxkpi/common/include/linux/bitmap.h	Fri Jul 10 12:06:18 2020	(r363078)
@@ -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)


More information about the svn-src-head mailing list