svn commit: r363793 - stable/12/sys/compat/linuxkpi/common/include/linux

Hans Petter Selasky hselasky at FreeBSD.org
Mon Aug 3 09:19:00 UTC 2020


Author: hselasky
Date: Mon Aug  3 09:18:59 2020
New Revision: 363793
URL: https://svnweb.freebsd.org/changeset/base/363793

Log:
  MFC r363078:
  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.
  
  Sponsored by:		Mellanox Technologies

Modified:
  stable/12/sys/compat/linuxkpi/common/include/linux/bitmap.h
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/compat/linuxkpi/common/include/linux/bitmap.h
==============================================================================
--- stable/12/sys/compat/linuxkpi/common/include/linux/bitmap.h	Mon Aug  3 09:15:38 2020	(r363792)
+++ stable/12/sys/compat/linuxkpi/common/include/linux/bitmap.h	Mon Aug  3 09:18:59 2020	(r363793)
@@ -243,6 +243,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-all mailing list