[ntos]
authorGiannis Adamopoulos <gadamopoulos@reactos.org>
Mon, 26 Jul 2010 21:32:38 +0000 (21:32 +0000)
committerGiannis Adamopoulos <gadamopoulos@reactos.org>
Mon, 26 Jul 2010 21:32:38 +0000 (21:32 +0000)
- Fix several issues with msvc in ntoskrnl
- Add ATTRIB_NORETURN definition which will be used by function pointers because msvc doesn't like DECLSPEC_NORETURN in function pointers

svn path=/trunk/; revision=48287

17 files changed:
reactos/hal/halx86/include/halp.h
reactos/include/crt/_mingw.h
reactos/include/crt/setjmp.h
reactos/include/crt/stdlib.h
reactos/ntoskrnl/ex/init.c
reactos/ntoskrnl/include/internal/i386/ke.h
reactos/ntoskrnl/include/internal/ke.h
reactos/ntoskrnl/include/internal/trap_x.h
reactos/ntoskrnl/io/iomgr/device.c
reactos/ntoskrnl/io/pnpmgr/pnpmgr.c
reactos/ntoskrnl/ke/i386/cpu.c
reactos/ntoskrnl/ke/i386/exp.c
reactos/ntoskrnl/ke/i386/irqobj.c
reactos/ntoskrnl/ke/i386/kiinit.c
reactos/ntoskrnl/ke/i386/traphdlr.c
reactos/ntoskrnl/mm/ARM3/i386/init.c
reactos/ntoskrnl/mm/ARM3/pfnlist.c

index c74ae1b..0933178 100644 (file)
@@ -28,10 +28,9 @@ VOID
 );
 
 typedef
-FASTCALL
 VOID
-DECLSPEC_NORETURN
-(*PHAL_SW_INTERRUPT_HANDLER_2ND_ENTRY)(
+ATTRIB_NORETURN
+(FASTCALL *PHAL_SW_INTERRUPT_HANDLER_2ND_ENTRY)(
     IN PKTRAP_FRAME TrapFrame
 );
 
@@ -558,8 +557,8 @@ VOID NTAPI HalpInitializePICs(IN BOOLEAN EnableInterrupts);
 VOID HalpApcInterrupt(VOID);
 VOID HalpDispatchInterrupt(VOID);
 VOID HalpDispatchInterrupt2(VOID);
-VOID FASTCALL DECLSPEC_NORETURN HalpApcInterrupt2ndEntry(IN PKTRAP_FRAME TrapFrame);
-VOID FASTCALL DECLSPEC_NORETURN HalpDispatchInterrupt2ndEntry(IN PKTRAP_FRAME TrapFrame);
+DECLSPEC_NORETURN VOID FASTCALL HalpApcInterrupt2ndEntry(IN PKTRAP_FRAME TrapFrame);
+DECLSPEC_NORETURN VOID FASTCALL HalpDispatchInterrupt2ndEntry(IN PKTRAP_FRAME TrapFrame);
 
 /* timer.c */
 VOID NTAPI HalpInitializeClock(VOID);
index 3ab124d..c1da6d7 100644 (file)
@@ -205,6 +205,12 @@ allow GCC to optimize away some EH unwind code, at least in DW2 case.  */
 #define _CRT_UNUSED(x) (void)x
 #endif
 
+#ifdef _MSC_VER
+#define ATTRIB_NORETURN
+#else
+#define ATTRIB_NORETURN DECLSPEC_NORETURN
+#endif
+
 #include "_mingw_mac.h"
 
 #endif /* !_INC_MINGW */
index ecfeb82..53f949a 100644 (file)
@@ -136,7 +136,7 @@ extern "C" {
 #define _JMP_BUF_DEFINED
 #endif
 
-static inline __attribute__((always_inline)) void * mingw_getsp(void)
+FORCEINLINE void * mingw_getsp(void)
 {
     void *value;
 #if defined(__x86_64)
index 2114c18..800ad1c 100644 (file)
@@ -489,7 +489,9 @@ extern "C" {
 
   __MINGW_EXTENSION lldiv_t __cdecl lldiv(long long, long long);
 
+#ifndef _MSC_VER
   __MINGW_EXTENSION __CRT_INLINE long long __cdecl llabs(long long _j) { return (_j >= 0 ? _j : -_j); }
+#endif
 
   __MINGW_EXTENSION long long  __cdecl strtoll(const char* __restrict__, char** __restrict, int);
   __MINGW_EXTENSION unsigned long long  __cdecl strtoull(const char* __restrict__, char** __restrict__, int);
index 048d639..75a0ce5 100644 (file)
@@ -1230,6 +1230,8 @@ ExpInitializeExecutive(IN ULONG Cpu,
     SharedUserData->ImageNumberHigh = IMAGE_FILE_MACHINE_ARCHITECTURE;
 }
 
+extern BOOLEAN AllowPagedPool;
+
 VOID
 NTAPI
 Phase1InitializationDiscard(IN PVOID Context)
@@ -1860,7 +1862,6 @@ Phase1InitializationDiscard(IN PVOID Context)
     InbvEnableDisplayString(TRUE);
 
     /* Enough fun for now */
-    extern BOOLEAN AllowPagedPool;
     AllowPagedPool = FALSE;
 
     /* Wait 5 seconds for it to initialize */
index bc5f293..1632532 100644 (file)
@@ -455,7 +455,7 @@ extern ULONG Ke386CacheAlignment;
 extern ULONG KiFastSystemCallDisable;
 extern UCHAR KiDebugRegisterTrapOffsets[9];
 extern UCHAR KiDebugRegisterContextOffsets[9];
-extern VOID __cdecl KiTrap02(VOID);
+extern DECLSPEC_NORETURN VOID __cdecl KiTrap02(VOID);
 extern VOID __cdecl KiTrap08(VOID);
 extern VOID __cdecl KiTrap13(VOID);
 extern VOID __cdecl KiFastCallEntry(VOID);
index 5dac916..45d47d1 100644 (file)
@@ -940,6 +940,7 @@ KiContinue(
     IN PKTRAP_FRAME TrapFrame
 );
 
+DECLSPEC_NORETURN
 VOID
 FASTCALL
 KiServiceExit(
@@ -947,6 +948,7 @@ KiServiceExit(
     IN NTSTATUS Status
 );
 
+DECLSPEC_NORETURN
 VOID
 FASTCALL
 KiServiceExit2(
index 0d61dd6..5ead640 100644 (file)
@@ -199,7 +199,7 @@ DECLSPEC_NORETURN VOID FASTCALL KiTrapReturn(IN PKTRAP_FRAME TrapFrame);
 DECLSPEC_NORETURN VOID FASTCALL KiTrapReturnNoSegments(IN PKTRAP_FRAME TrapFrame);
 
 typedef
-DECLSPEC_NORETURN
+ATTRIB_NORETURN
 VOID
 (FASTCALL *PFAST_SYSTEM_CALL_EXIT)(
     IN PKTRAP_FRAME TrapFrame
index b9176ce..ec6de6c 100644 (file)
@@ -29,8 +29,8 @@ VOID
 NTAPI
 IopReadyDeviceObjects(IN PDRIVER_OBJECT Driver)
 {
-    PAGED_CODE();
     PDEVICE_OBJECT DeviceObject;
+    PAGED_CODE();
 
     /* Set the driver as initialized */
     Driver->Flags |= DRVO_INITIALIZED;
index c52144e..e0ad64b 100644 (file)
@@ -3035,10 +3035,11 @@ NTAPI
 PpIrpQueryCapabilities(IN PDEVICE_OBJECT DeviceObject,
                        OUT PDEVICE_CAPABILITIES DeviceCaps)
 {
-    PAGED_CODE();
     PVOID Dummy;
     IO_STACK_LOCATION Stack;
-    
+
+    PAGED_CODE();
+
     /* Set up the Header */
     RtlZeroMemory(DeviceCaps, sizeof(DEVICE_CAPABILITIES));
     DeviceCaps->Size = sizeof(DEVICE_CAPABILITIES);
index e05a896..4dcb853 100644 (file)
@@ -1173,7 +1173,12 @@ KiIsNpxPresent(VOID)
     Cr0 = __readcr0() & ~(CR0_MP | CR0_TS | CR0_EM | CR0_ET);
     
     /* Store on FPU stack */
+#ifdef _MSC_VER
+    __asm fninit;
+    __asm fnstsw Magic;
+#else
     asm volatile ("fninit;" "fnstsw %0" : "+m"(Magic));
+#endif
     
     /* Magic should now be cleared */
     if (Magic & 0xFF)
@@ -1210,7 +1215,7 @@ KiIsNpxErrataPresent(VOID)
     __writecr0(Cr0 & ~(CR0_MP | CR0_TS | CR0_EM));
     
     /* Initialize FPU state */
-    asm volatile ("fninit");
+    Ke386FnInit();
     
     /* Multiply the magic values and divide, we should get the result back */
     Value1 = 4195835.0;
@@ -1227,8 +1232,8 @@ KiIsNpxErrataPresent(VOID)
     return ErrataPresent;
 }
 
-NTAPI
 VOID
+NTAPI
 KiFlushNPXState(IN PFLOATING_SAVE_AREA SaveArea)
 {
     ULONG EFlags, Cr0;
index ebc327f..6ef92e0 100644 (file)
@@ -1106,9 +1106,9 @@ Handled:
     return;
 }
 
+DECLSPEC_NORETURN
 VOID
 NTAPI
-DECLSPEC_NORETURN
 KiDispatchExceptionFromTrapFrame(IN NTSTATUS Code,
                                  IN ULONG_PTR Address,
                                  IN ULONG ParameterCount,
@@ -1145,9 +1145,9 @@ KiDispatchExceptionFromTrapFrame(IN NTSTATUS Code,
     KiEoiHelper(TrapFrame);
 }
 
+DECLSPEC_NORETURN
 VOID
 FASTCALL
-DECLSPEC_NORETURN
 KiSystemFatalException(IN ULONG ExceptionCode,
                        IN PKTRAP_FRAME TrapFrame)
 {
index fca5bdc..a7fe23d 100644 (file)
@@ -184,9 +184,8 @@ KiUnexpectedInterruptTailHandler(IN PKTRAP_FRAME TrapFrame)
 }
 
 typedef
-FASTCALL
 VOID
-(PKI_INTERRUPT_DISPATCH)(
+(FASTCALL *PKI_INTERRUPT_DISPATCH)(
     IN PKTRAP_FRAME TrapFrame,
     IN PKINTERRUPT Interrupt
 );
@@ -310,7 +309,7 @@ KiInterruptTemplateHandler(IN PKTRAP_FRAME TrapFrame,
     KiEnterInterruptTrap(TrapFrame);
 
     /* Call the correct dispatcher */
-    ((PKI_INTERRUPT_DISPATCH*)Interrupt->DispatchAddress)(TrapFrame, Interrupt);
+    ((PKI_INTERRUPT_DISPATCH)Interrupt->DispatchAddress)(TrapFrame, Interrupt);
 }
 
 
index ea7f140..b9ad8c6 100644 (file)
@@ -16,8 +16,8 @@
 /* GLOBALS *******************************************************************/
 
 /* Boot and double-fault/NMI/DPC stack */
-UCHAR P0BootStackData[KERNEL_STACK_SIZE] __attribute__((aligned (16))) = {0};
-UCHAR KiDoubleFaultStackData[KERNEL_STACK_SIZE] __attribute__((aligned (16))) = {0};
+UCHAR DECLSPEC_ALIGN(16) P0BootStackData[KERNEL_STACK_SIZE] = {0};
+UCHAR DECLSPEC_ALIGN(16) KiDoubleFaultStackData[KERNEL_STACK_SIZE] = {0};
 ULONG_PTR P0BootStack = (ULONG_PTR)&P0BootStackData[KERNEL_STACK_SIZE];
 ULONG_PTR KiDoubleFaultStack = (ULONG_PTR)&KiDoubleFaultStackData[KERNEL_STACK_SIZE];
 
index 7e96043..41d367e 100644 (file)
@@ -102,9 +102,9 @@ KiCommonExit(IN PKTRAP_FRAME TrapFrame, const ULONG Flags)
     }
 }
 
+DECLSPEC_NORETURN
 VOID
 FASTCALL
-DECLSPEC_NORETURN
 KiEoiHelper(IN PKTRAP_FRAME TrapFrame)
 {
     /* Common trap exit code */
@@ -123,9 +123,9 @@ KiEoiHelper(IN PKTRAP_FRAME TrapFrame)
     KiTrapReturnNoSegments(TrapFrame);
 }
 
+DECLSPEC_NORETURN
 VOID
 FASTCALL
-DECLSPEC_NORETURN
 KiServiceExit(IN PKTRAP_FRAME TrapFrame,
               IN NTSTATUS Status)
 {
@@ -161,9 +161,9 @@ KiServiceExit(IN PKTRAP_FRAME TrapFrame,
     KiSystemCallReturn(TrapFrame);
 }
 
+DECLSPEC_NORETURN
 VOID
 FASTCALL
-DECLSPEC_NORETURN
 KiServiceExit2(IN PKTRAP_FRAME TrapFrame)
 {
     /* Common trap exit code */
@@ -188,9 +188,9 @@ KiServiceExit2(IN PKTRAP_FRAME TrapFrame)
 
 /* TRAP HANDLERS **************************************************************/
 
+DECLSPEC_NORETURN
 VOID
 FASTCALL
-DECLSPEC_NORETURN
 KiDebugHandler(IN PKTRAP_FRAME TrapFrame,
                IN ULONG Parameter1,
                IN ULONG Parameter2,
@@ -212,9 +212,9 @@ KiDebugHandler(IN PKTRAP_FRAME TrapFrame,
                                      TrapFrame); 
 }
 
+DECLSPEC_NORETURN
 VOID
 FASTCALL
-DECLSPEC_NORETURN
 KiNpxHandler(IN PKTRAP_FRAME TrapFrame,
              IN PKTHREAD Thread,
              IN PFX_SAVE_AREA SaveArea)
@@ -369,9 +369,9 @@ KiNpxHandler(IN PKTRAP_FRAME TrapFrame,
     KeBugCheckWithTf(TRAP_CAUSE_UNKNOWN, 1, Error, 0, 0, TrapFrame);
 }
 
+DECLSPEC_NORETURN
 VOID
 FASTCALL
-DECLSPEC_NORETURN
 KiTrap00Handler(IN PKTRAP_FRAME TrapFrame)
 {
     /* Save trap frame */
@@ -389,9 +389,9 @@ KiTrap00Handler(IN PKTRAP_FRAME TrapFrame)
                              TrapFrame);
 }
 
+DECLSPEC_NORETURN
 VOID
 FASTCALL
-DECLSPEC_NORETURN
 KiTrap01Handler(IN PKTRAP_FRAME TrapFrame)
 {
     /* Save trap frame */
@@ -410,8 +410,9 @@ KiTrap01Handler(IN PKTRAP_FRAME TrapFrame)
                              TrapFrame);
 }
 
-VOID
 DECLSPEC_NORETURN
+VOID
+__cdecl
 KiTrap02(VOID)
 {
     PKTSS Tss, NmiTss;
@@ -556,9 +557,9 @@ KiTrap02(VOID)
     KiSystemFatalException(EXCEPTION_NMI, NULL);
 }
 
+DECLSPEC_NORETURN
 VOID
 FASTCALL
-DECLSPEC_NORETURN
 KiTrap03Handler(IN PKTRAP_FRAME TrapFrame)
 {
     /* Save trap frame */
@@ -568,9 +569,9 @@ KiTrap03Handler(IN PKTRAP_FRAME TrapFrame)
     KiDebugHandler(TrapFrame, BREAKPOINT_BREAK, 0, 0);
 }
 
+DECLSPEC_NORETURN
 VOID
 FASTCALL
-DECLSPEC_NORETURN
 KiTrap04Handler(IN PKTRAP_FRAME TrapFrame)
 {
     /* Save trap frame */
@@ -588,9 +589,9 @@ KiTrap04Handler(IN PKTRAP_FRAME TrapFrame)
                              TrapFrame);
 }
 
+DECLSPEC_NORETURN
 VOID
 FASTCALL
-DECLSPEC_NORETURN
 KiTrap05Handler(IN PKTRAP_FRAME TrapFrame)
 {
     /* Save trap frame */
@@ -611,9 +612,9 @@ KiTrap05Handler(IN PKTRAP_FRAME TrapFrame)
                              TrapFrame);
 }
 
+DECLSPEC_NORETURN
 VOID
 FASTCALL
-DECLSPEC_NORETURN
 KiTrap06Handler(IN PKTRAP_FRAME TrapFrame)
 {
     PUCHAR Instruction;
@@ -693,9 +694,9 @@ KiTrap06Handler(IN PKTRAP_FRAME TrapFrame)
     
 }
 
+DECLSPEC_NORETURN
 VOID
 FASTCALL
-DECLSPEC_NORETURN
 KiTrap07Handler(IN PKTRAP_FRAME TrapFrame)
 {
     PKTHREAD Thread, NpxThread;
@@ -803,18 +804,18 @@ KiTrap07Handler(IN PKTRAP_FRAME TrapFrame)
     KiNpxHandler(TrapFrame, Thread, SaveArea);
 }
 
+DECLSPEC_NORETURN
 VOID
 FASTCALL
-DECLSPEC_NORETURN
 KiTrap08Handler(IN PKTRAP_FRAME TrapFrame)
 {
     /* FIXME: Not handled */
     KiSystemFatalException(EXCEPTION_DOUBLE_FAULT, TrapFrame);
 }
 
+DECLSPEC_NORETURN
 VOID
 FASTCALL
-DECLSPEC_NORETURN
 KiTrap09Handler(IN PKTRAP_FRAME TrapFrame)
 {
     /* Save trap frame */
@@ -825,9 +826,9 @@ KiTrap09Handler(IN PKTRAP_FRAME TrapFrame)
     KiSystemFatalException(EXCEPTION_NPX_OVERRUN, TrapFrame);
 }
 
+DECLSPEC_NORETURN
 VOID
 FASTCALL
-DECLSPEC_NORETURN
 KiTrap0AHandler(IN PKTRAP_FRAME TrapFrame)
 {
     /* Save trap frame */
@@ -840,9 +841,9 @@ KiTrap0AHandler(IN PKTRAP_FRAME TrapFrame)
     KiSystemFatalException(EXCEPTION_INVALID_TSS, TrapFrame);
 }
 
+DECLSPEC_NORETURN
 VOID
 FASTCALL
-DECLSPEC_NORETURN
 KiTrap0BHandler(IN PKTRAP_FRAME TrapFrame)
 {
     /* Save trap frame */
@@ -853,9 +854,9 @@ KiTrap0BHandler(IN PKTRAP_FRAME TrapFrame)
     KiSystemFatalException(EXCEPTION_SEGMENT_NOT_PRESENT, TrapFrame);
 }
 
+DECLSPEC_NORETURN
 VOID
 FASTCALL
-DECLSPEC_NORETURN
 KiTrap0CHandler(IN PKTRAP_FRAME TrapFrame)
 {
     /* Save trap frame */
@@ -866,9 +867,9 @@ KiTrap0CHandler(IN PKTRAP_FRAME TrapFrame)
     KiSystemFatalException(EXCEPTION_STACK_FAULT, TrapFrame);
 }
 
+DECLSPEC_NORETURN
 VOID
 FASTCALL
-DECLSPEC_NORETURN
 KiTrap0DHandler(IN PKTRAP_FRAME TrapFrame)
 {
     ULONG i, j, Iopl;
@@ -1145,9 +1146,9 @@ KiTrap0DHandler(IN PKTRAP_FRAME TrapFrame)
     KiTrapReturn(TrapFrame);
 }
 
+DECLSPEC_NORETURN
 VOID
 FASTCALL
-DECLSPEC_NORETURN
 KiTrap0EHandler(IN PKTRAP_FRAME TrapFrame)
 {
     PKTHREAD Thread;
@@ -1260,9 +1261,9 @@ KiTrap0EHandler(IN PKTRAP_FRAME TrapFrame)
                                      TrapFrame);
 }
 
+DECLSPEC_NORETURN
 VOID
 FASTCALL
-DECLSPEC_NORETURN
 KiTrap0FHandler(IN PKTRAP_FRAME TrapFrame)
 {
     /* Save trap frame */
@@ -1273,9 +1274,9 @@ KiTrap0FHandler(IN PKTRAP_FRAME TrapFrame)
     KiSystemFatalException(EXCEPTION_RESERVED_TRAP, TrapFrame);
 }
 
+DECLSPEC_NORETURN
 VOID
 FASTCALL
-DECLSPEC_NORETURN
 KiTrap10Handler(IN PKTRAP_FRAME TrapFrame)
 {
     PKTHREAD Thread;
@@ -1301,9 +1302,9 @@ KiTrap10Handler(IN PKTRAP_FRAME TrapFrame)
     KiNpxHandler(TrapFrame, Thread, SaveArea);
 }
 
+DECLSPEC_NORETURN
 VOID
 FASTCALL
-DECLSPEC_NORETURN
 KiTrap11Handler(IN PKTRAP_FRAME TrapFrame)
 {
     /* Save trap frame */
@@ -1314,9 +1315,9 @@ KiTrap11Handler(IN PKTRAP_FRAME TrapFrame)
     KiSystemFatalException(EXCEPTION_ALIGNMENT_CHECK, TrapFrame);
 }
 
+DECLSPEC_NORETURN
 VOID
 FASTCALL
-DECLSPEC_NORETURN
 KiTrap13Handler(IN PKTRAP_FRAME TrapFrame)
 {
     PKTHREAD Thread;
@@ -1417,9 +1418,9 @@ KiCallbackReturnHandler(IN PKTRAP_FRAME TrapFrame)
     while (TRUE);
 }
 
+DECLSPEC_NORETURN
 VOID
 FASTCALL
-DECLSPEC_NORETURN
 KiRaiseAssertionHandler(IN PKTRAP_FRAME TrapFrame)
 {
     /* Save trap frame */
@@ -1434,9 +1435,9 @@ KiRaiseAssertionHandler(IN PKTRAP_FRAME TrapFrame)
                              TrapFrame);
 }
 
+DECLSPEC_NORETURN
 VOID
 FASTCALL
-DECLSPEC_NORETURN
 KiDebugServiceHandler(IN PKTRAP_FRAME TrapFrame)
 {
     /* Save trap frame */
@@ -1449,9 +1450,9 @@ KiDebugServiceHandler(IN PKTRAP_FRAME TrapFrame)
     KiDebugHandler(TrapFrame, TrapFrame->Eax, TrapFrame->Ecx, TrapFrame->Edx);
 }
 
+DECLSPEC_NORETURN
 VOID
 FORCEINLINE
-DECLSPEC_NORETURN
 KiSystemCall(IN PKTRAP_FRAME TrapFrame,
              IN PVOID Arguments)
 {
@@ -1574,9 +1575,9 @@ ExitCall:
     KiServiceExit(TrapFrame, Result);
 }
 
+DECLSPEC_NORETURN
 VOID
 FASTCALL
-DECLSPEC_NORETURN
 KiSystemServiceHandler(IN PKTRAP_FRAME TrapFrame,
                        IN PVOID Arguments)
 {
@@ -1584,9 +1585,9 @@ KiSystemServiceHandler(IN PKTRAP_FRAME TrapFrame,
     KiSystemCall(TrapFrame, Arguments);
 }
 
+DECLSPEC_NORETURN
 VOID
 FASTCALL
-DECLSPEC_NORETURN
 KiFastCallEntryHandler(IN PKTRAP_FRAME TrapFrame,
                        IN PVOID Arguments)
 {
index 06afaf2..90ed32e 100644 (file)
@@ -145,6 +145,8 @@ MiComputeNonPagedPoolVa(IN ULONG FreePages)
     }
 }
 
+extern KEVENT ZeroPageThreadEvent;
+
 NTSTATUS
 NTAPI
 MiInitMachineDependent(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
@@ -497,7 +499,6 @@ MiInitMachineDependent(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
     MiInitializeColorTables();
     
     /* ReactOS Stuff */
-    extern KEVENT ZeroPageThreadEvent;
     KeInitializeEvent(&ZeroPageThreadEvent, NotificationEvent, TRUE);
     
     /* Build the PFN Database */
index 294f656..659adcc 100644 (file)
@@ -566,6 +566,8 @@ MiRemoveHeadList(IN PMMPFNLIST ListHead)
     return Pfn1;
 }
 
+extern KEVENT ZeroPageThreadEvent;
+
 VOID
 NTAPI
 MiInsertPageInFreeList(IN PFN_NUMBER PageFrameIndex)
@@ -674,7 +676,6 @@ MiInsertPageInFreeList(IN PFN_NUMBER PageFrameIndex)
 #endif
     
     /* Notify zero page thread if enough pages are on the free list now */
-    extern KEVENT ZeroPageThreadEvent;
     if ((MmFreePageListHead.Total > 8) && !(KeReadStateEvent(&ZeroPageThreadEvent)))
     {
         /* This is ReactOS-specific */