svn commit: r255059 - head/sys/sys

Konstantin Belousov kib at FreeBSD.org
Fri Aug 30 07:43:35 UTC 2013


Author: kib
Date: Fri Aug 30 07:43:34 2013
New Revision: 255059
URL: http://svnweb.freebsd.org/changeset/base/255059

Log:
  Add BIT_AND_ATOMIC() and CPU_AND_ATOMIC().
  
  Sponsored by:	The FreeBSD Foundation
  Reviewed by:	alc
  Tested by:	pho, bf

Modified:
  head/sys/sys/bitset.h
  head/sys/sys/cpuset.h

Modified: head/sys/sys/bitset.h
==============================================================================
--- head/sys/sys/bitset.h	Fri Aug 30 07:42:38 2013	(r255058)
+++ head/sys/sys/bitset.h	Fri Aug 30 07:43:34 2013	(r255059)
@@ -135,7 +135,14 @@
 	atomic_set_long(&(p)->__bits[__bitset_word(_s, n)],		\
 	    __bitset_mask((_s), n))
 
-/* Convenience functions catering special cases. */ 
+/* Convenience functions catering special cases. */
+#define	BIT_AND_ATOMIC(_s, d, s) do {					\
+	__size_t __i;							\
+	for (__i = 0; __i < __bitset_words((_s)); __i++)		\
+		atomic_clear_long(&(d)->__bits[__i],			\
+		    ~(s)->__bits[__i]);					\
+} while (0)
+
 #define	BIT_OR_ATOMIC(_s, d, s) do {					\
 	__size_t __i;							\
 	for (__i = 0; __i < __bitset_words((_s)); __i++)		\

Modified: head/sys/sys/cpuset.h
==============================================================================
--- head/sys/sys/cpuset.h	Fri Aug 30 07:42:38 2013	(r255058)
+++ head/sys/sys/cpuset.h	Fri Aug 30 07:43:34 2013	(r255059)
@@ -55,6 +55,7 @@
 #define	CPU_NAND(d, s)			BIT_NAND(CPU_SETSIZE, d, s)
 #define	CPU_CLR_ATOMIC(n, p)		BIT_CLR_ATOMIC(CPU_SETSIZE, n, p)
 #define	CPU_SET_ATOMIC(n, p)		BIT_SET_ATOMIC(CPU_SETSIZE, n, p)
+#define	CPU_AND_ATOMIC(n, p)		BIT_AND_ATOMIC(CPU_SETSIZE, n, p)
 #define	CPU_OR_ATOMIC(d, s)		BIT_OR_ATOMIC(CPU_SETSIZE, d, s)
 #define	CPU_COPY_STORE_REL(f, t)	BIT_COPY_STORE_REL(CPU_SETSIZE, f, t)
 #define	CPU_FFS(p)			BIT_FFS(CPU_SETSIZE, p)


More information about the svn-src-head mailing list