[ros-diffs] [tkreuzer] 35510: Make KeGetCurrentIrql, KeLowerIrql, KfRaiseIrql, KeRaiseIrql, KeRaiseIrqlToDpcLevel and KeRaiseIrqlToSynchLevel intrinsics as in the WDK 2008.

tkreuzer at svn.reactos.org tkreuzer at svn.reactos.org
Thu Aug 21 20:07:46 CEST 2008


Author: tkreuzer
Date: Thu Aug 21 13:07:45 2008
New Revision: 35510

URL: http://svn.reactos.org/svn/reactos?rev=35510&view=rev
Log:
Make KeGetCurrentIrql, KeLowerIrql, KfRaiseIrql, KeRaiseIrql, KeRaiseIrqlToDpcLevel and KeRaiseIrqlToSynchLevel intrinsics as in the WDK 2008.

Modified:
    branches/ros-amd64-bringup/reactos/include/ddk/winddk.h

Modified: branches/ros-amd64-bringup/reactos/include/ddk/winddk.h
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/include/ddk/winddk.h?rev=35510&r1=35509&r2=35510&view=diff
==============================================================================
--- branches/ros-amd64-bringup/reactos/include/ddk/winddk.h [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/include/ddk/winddk.h [iso-8859-1] Thu Aug 21 13:07:45 2008
@@ -9962,47 +9962,47 @@
 
 #elif defined(_M_AMD64)
 
-/*
-NTKERNELAPI
-KIRQL
-KeGetCurrentIrql(
-    VOID);
-*/
 FORCEINLINE
 KIRQL
-_KeGetCurrentIrql(VOID)
+KeGetCurrentIrql(VOID)
 {
     return (KIRQL)__readcr8();
 }
-#define KeGetCurrentIrql _KeGetCurrentIrql
-
-NTKERNELAPI
-VOID
-KfLowerIrql(
-  IN KIRQL  NewIrql);
-
-NTKERNELAPI
+
+FORCEINLINE
+VOID
+KeLowerIrql(IN KIRQL NewIrql)
+{
+    ASSERT(KeGetCurrentIrql() >= NewIrql);
+    __writecr8(NewIrql);
+}
+
+FORCEINLINE
 KIRQL
-KfRaiseIrql(
-  IN KIRQL  NewIrql);
-
-NTKERNELAPI
+KfRaiseIrql(IN KIRQL NewIrql)
+{
+    KIRQL OldIrql;
+
+    OldIrql = __readcr8();
+    ASSERT(OldIrql <= NewIrql);
+    __writecr8(NewIrql);
+    return OldIrql;
+}
+#define KeRaiseIrql(a,b) *(b) = KfRaiseIrql(a)
+
+FORCEINLINE
 KIRQL
-KeRaiseIrqlToDpcLevel(
-  VOID);
-
-NTKERNELAPI
+KeRaiseIrqlToDpcLevel(VOID)
+{
+    return KfRaiseIrql(DISPATCH_LEVEL);
+}
+
+FORCEINLINE
 KIRQL
-KeRaiseIrqlToSynchLevel(
-    VOID);
-
-NTKERNELAPI
-VOID
-KeLowerIrql(
-  IN KIRQL NewIrql);
-
-#define KeRaiseIrql(a,b) *(b) = KfRaiseIrql(a)
-
+KeRaiseIrqlToSynchLevel(VOID)
+{
+    return KfRaiseIrql(12); // SYNCH_LEVEL = IPI_LEVEL - 2
+}
 
 #elif defined(__PowerPC__)
 



More information about the Ros-diffs mailing list