[ros-diffs] [tkreuzer] 34900: move the inlined InterlockedAnd/Or from rtl to winbase.h and rename it to InterlockedAnd/Or_Inline

tkreuzer at svn.reactos.org tkreuzer at svn.reactos.org
Mon Jul 28 16:05:46 CEST 2008


Author: tkreuzer
Date: Mon Jul 28 09:05:45 2008
New Revision: 34900

URL: http://svn.reactos.org/svn/reactos?rev=34900&view=rev
Log:
move the inlined InterlockedAnd/Or from rtl to winbase.h and rename it to InterlockedAnd/Or_Inline

Modified:
    branches/ros-amd64-bringup/reactos/include/psdk/winbase.h
    branches/ros-amd64-bringup/reactos/lib/rtl/srw.c

Modified: branches/ros-amd64-bringup/reactos/include/psdk/winbase.h
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/include/psdk/winbase.h?rev=34900&r1=34899&r2=34900&view=diff
==============================================================================
--- branches/ros-amd64-bringup/reactos/include/psdk/winbase.h [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/include/psdk/winbase.h [iso-8859-1] Mon Jul 28 09:05:45 2008
@@ -1707,7 +1707,7 @@
 #ifndef __INTERLOCKED_DECLARED
 #define __INTERLOCKED_DECLARED
 
-#if defined (_M_AMD64)
+#if defined (_M_AMD64) || defined (_M_IA64)
 
 #define InterlockedAnd _InterlockedAnd
 #define InterlockedOr _InterlockedOr
@@ -1737,7 +1737,8 @@
 #define InterlockedCompareExchange64 _InterlockedCompareExchange64
 #define InterlockedCompareExchangeAcquire64 InterlockedCompareExchange64
 #define InterlockedCompareExchangeRelease64 InterlockedCompareExchange64
-#else
+
+#else // !(defined (_M_AMD64) || defined (_M_IA64))
 
 LONG WINAPI InterlockedOr(IN OUT LONG volatile *,LONG);
 LONG WINAPI InterlockedAnd(IN OUT LONG volatile *,LONG);
@@ -1769,8 +1770,56 @@
 PSLIST_ENTRY WINAPI InterlockedPushEntrySList(PSLIST_HEADER,PSLIST_ENTRY);
 #endif
 
-#endif /* !defined(_WIN64) */
+#endif // !(defined (_M_AMD64) || defined (_M_IA64))
+
+#if !defined(InterlockedAnd)
+#define InterlockedAnd InterlockedAnd_Inline
+FORCEINLINE
+LONG
+InterlockedAnd_Inline(IN OUT volatile LONG *Target,
+               IN LONG Set)
+{
+    LONG i;
+    LONG j;
+
+    j = *Target;
+    do {
+        i = j;
+        j = _InterlockedCompareExchange((PLONG)Target,
+                                        i & Set,
+                                        i);
+
+    } while (i != j);
+
+    return j;
+}
+#endif
+
+#if !defined(InterlockedOr)
+#define InterlockedOr InterlockedOr_Inline
+FORCEINLINE
+LONG
+InterlockedOr_Inline(IN OUT volatile LONG *Target,
+              IN LONG Set)
+{
+    LONG i;
+    LONG j;
+
+    j = *Target;
+    do {
+        i = j;
+        j = _InterlockedCompareExchange((PLONG)Target,
+                                        i | Set,
+                                        i);
+
+    } while (i != j);
+
+    return j;
+}
+#endif
+
 #endif /* __INTERLOCKED_DECLARED */
+
 BOOL WINAPI IsBadCodePtr(FARPROC);
 BOOL WINAPI IsBadHugeReadPtr(PCVOID,UINT_PTR);
 BOOL WINAPI IsBadHugeWritePtr(PVOID,UINT_PTR);

Modified: branches/ros-amd64-bringup/reactos/lib/rtl/srw.c
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/lib/rtl/srw.c?rev=34900&r1=34899&r2=34900&view=diff
==============================================================================
--- branches/ros-amd64-bringup/reactos/lib/rtl/srw.c [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/lib/rtl/srw.c [iso-8859-1] Mon Jul 28 09:05:45 2008
@@ -18,51 +18,6 @@
 #define NDEBUG
 #include <debug.h>
 
-/* FIXME *********************************************************************/
-
-/* FIXME: Interlocked functions that need to be made into a public header */
-#if 0
-FORCEINLINE
-LONG
-InterlockedAnd(IN OUT volatile LONG *Target,
-               IN LONG Set)
-{
-    LONG i;
-    LONG j;
-
-    j = *Target;
-    do {
-        i = j;
-        j = _InterlockedCompareExchange((PLONG)Target,
-                                        i & Set,
-                                        i);
-
-    } while (i != j);
-
-    return j;
-}
-
-FORCEINLINE
-LONG
-InterlockedOr(IN OUT volatile LONG *Target,
-              IN LONG Set)
-{
-    LONG i;
-    LONG j;
-
-    j = *Target;
-    do {
-        i = j;
-        j = _InterlockedCompareExchange((PLONG)Target,
-                                        i | Set,
-                                        i);
-
-    } while (i != j);
-
-    return j;
-}
-#endif
-
 /* FUNCTIONS *****************************************************************/
 
 #ifdef _WIN64



More information about the Ros-diffs mailing list