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)
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to