Windows: Switch to Interlocked ops for RDR Set/Clear
authorJeffrey Altman <jaltman@your-file-system.com>
Thu, 4 Apr 2013 03:33:40 +0000 (23:33 -0400)
committerJeffrey Altman <jaltman@your-file-system.com>
Sat, 6 Apr 2013 02:28:29 +0000 (19:28 -0700)
Switch to using interlocked operations for the SetFlag and ClearFlag
macros.

Change-Id: I2b071ae49f69d557c30d1280fb7877dde7f76f40
Reviewed-on: http://gerrit.openafs.org/9722
Reviewed-by: Peter Scott <pscott@kerneldrivers.com>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@your-file-system.com>
Tested-by: Jeffrey Altman <jaltman@your-file-system.com>

src/WINNT/afsrdr/kernel/fs/Include/AFSDefines.h
src/WINNT/afsrdr/kernel/lib/Include/AFSDefines.h

index 239e4ff..fc1f595 100644 (file)
 #endif
 
 #ifndef SetFlag
-#define SetFlag(_F,_SF)       ((_F) |= (_SF))
+#define SetFlag(_F,_SF)       InterlockedOr(&(_F), (_SF))
 #endif
 
 #ifndef ClearFlag
-#define ClearFlag(_F,_SF)     ((_F) &= ~(_SF))
+#define ClearFlag(_F,_SF)     InterlockedAnd(&(_F), ~(_SF))
 #endif
 
 #define QuadAlign(Ptr) (                \
index cff9450..9e25bc1 100644 (file)
@@ -218,11 +218,11 @@ NTSTATUS
 #endif
 
 #ifndef SetFlag
-#define SetFlag(_F,_SF)       ((_F) |= (_SF))
+#define SetFlag(_F,_SF)       InterlockedOr(&(_F), (_SF))
 #endif
 
 #ifndef ClearFlag
-#define ClearFlag(_F,_SF)     ((_F) &= ~(_SF))
+#define ClearFlag(_F,_SF)     InterlockedAnd(&(_F), ~(_SF))
 #endif
 
 #define QuadAlign(Ptr) (                \