- Properly implement inline versions of KeGetCurrentThread and KeGetPreviousMode...
authorAlex Ionescu <aionescu@gmail.com>
Mon, 23 Oct 2006 22:01:25 +0000 (22:01 +0000)
committerAlex Ionescu <aionescu@gmail.com>
Mon, 23 Oct 2006 22:01:25 +0000 (22:01 +0000)
svn path=/trunk/; revision=24639

reactos/include/ddk/winddk.h
reactos/include/ndk/ketypes.h
reactos/ntoskrnl/ex/sysinfo.c
reactos/ntoskrnl/include/internal/ex.h
reactos/ntoskrnl/include/internal/ke_x.h
reactos/ntoskrnl/include/internal/ntoskrnl.h
reactos/ntoskrnl/ke/thrdobj.c

index 71c9603..5821302 100644 (file)
@@ -8678,12 +8678,6 @@ NTAPI
 KeGetCurrentThread(
   VOID);
 
-NTKERNELAPI
-KPROCESSOR_MODE
-NTAPI
-KeGetPreviousMode(
-  VOID);
-
 NTKERNELAPI
 ULONG
 NTAPI
index ca11ac4..6cb747d 100644 (file)
@@ -95,7 +95,7 @@ Author:
 //
 #define K0IPCR                          ((ULONG_PTR)(KIP0PCRADDRESS))
 #define PCR                             ((volatile KPCR * const)K0IPCR)
-#ifdef _WE_USE_THE_SAME_PCR_ADDRESS
+#if !defined(CONFIG_SMP) && !defined(NT_BUILD)
 #define KeGetPcr()                      PCR
 #else
 #define KeGetPcr()                      ((volatile KPCR * const)__readfsdword(0x1C))
index 27888f1..1cab664 100644 (file)
@@ -30,11 +30,12 @@ LIST_ENTRY ExpFirmwareTableProviderListHead;
 /*
  * @implemented
  */
+#undef ExGetPreviousMode
 KPROCESSOR_MODE
 NTAPI
 ExGetPreviousMode (VOID)
 {
-    return (KPROCESSOR_MODE)PsGetCurrentThread()->Tcb.PreviousMode;
+    return KeGetPreviousMode();
 }
 
 /*
index 15f8295..a196633 100644 (file)
@@ -47,6 +47,7 @@ PVOID ExpNlsSectionPointer;
 #define ExInitializeRundownProtection                   _ExInitializeRundownProtection
 #define ExWaitForRundownProtectionRelease               _ExWaitForRundownProtectionRelease
 #define ExRundownCompleted                              _ExRundownCompleted
+#define ExGetPreviousMode                               KeGetPreviousMode
 
 /* INITIALIZATION FUNCTIONS *************************************************/
 
index f90b97a..5f051e8 100644 (file)
@@ -1263,3 +1263,18 @@ KiComputeNewPriority(IN PKTHREAD Thread)
     return Priority;\r
 }\r
 \r
+PRKTHREAD\r
+FORCEINLINE\r
+KeGetCurrentThread(VOID)\r
+{\r
+    /* Return the current thread */\r
+    return ((PKIPCR)KeGetPcr())->PrcbData.CurrentThread;\r
+}\r
+\r
+UCHAR\r
+FORCEINLINE\r
+KeGetPreviousMode(VOID)\r
+{\r
+    /* Return the current mode */\r
+    return KeGetCurrentThread()->PreviousMode;\r
+}\r
index aab9712..d62290a 100644 (file)
@@ -17,6 +17,9 @@
 
 #ifdef _NTOSKRNL_
 
+#define KeGetCurrentThread _KeGetCurrentThread
+#define KeGetPreviousMode _KeGetPreviousMode
+
 #include "ke.h"
 #include "i386/mm.h"
 #include "i386/fpu.h"
index e2f63f6..83290b4 100644 (file)
@@ -882,18 +882,19 @@ NTAPI
 KeGetCurrentThread(VOID)\r
 {\r
     /* Return the current thread on this PCR */\r
-    return ((PKIPCR)KeGetPcr())->PrcbData.CurrentThread;\r
+    return _KeGetCurrentThread();\r
 }\r
 \r
 /*\r
  * @implemented\r
  */\r
-KPROCESSOR_MODE\r
+#undef KeGetPreviousMode\r
+UCHAR\r
 NTAPI\r
 KeGetPreviousMode(VOID)\r
 {\r
     /* Return the previous mode of this thread */\r
-    return KeGetCurrentThread()->PreviousMode;\r
+    return _KeGetPreviousMode();\r
 }\r
 \r
 /*\r