Sync to trunk head(r38096)
[reactos.git] / reactos / ntoskrnl / include / internal / ke.h
index a5641c9..cf60cd2 100644 (file)
@@ -105,6 +105,7 @@ extern PULONG KiInterruptTemplateObject;
 extern PULONG KiInterruptTemplateDispatch;
 extern PULONG KiInterruptTemplate2ndDispatch;
 extern ULONG KiUnexpectedEntrySize;
+#if defined(_M_IX86) || defined(_M_AMD64)
 extern PVOID Ki386IopmSaveArea;
 extern ULONG KeI386EFlagsAndMaskV86;
 extern ULONG KeI386EFlagsOrMaskV86;
@@ -114,9 +115,10 @@ extern KGDTENTRY KiBootGdt[];
 extern KDESCRIPTOR KiGdtDescriptor;
 extern KDESCRIPTOR KiIdtDescriptor;
 extern KTSS KiBootTss;
+#endif
 extern UCHAR P0BootStack[];
 extern UCHAR KiDoubleFaultStack[];
-extern FAST_MUTEX KernelAddressSpaceLock;
+extern EX_PUSH_LOCK KernelAddressSpaceLock;
 extern ULONG KiMaximumDpcQueueDepth;
 extern ULONG KiMinimumDpcRate;
 extern ULONG KiAdjustDpcThreshold;
@@ -140,6 +142,7 @@ extern KEVENT KiSwapEvent;
 extern PKPRCB KiProcessorBlock[];
 extern ULONG KiMask32Array[MAXIMUM_PRIORITY];
 extern ULONG KiIdleSummary;
+extern VOID __cdecl KiTrap19(VOID);
 extern VOID __cdecl KiTrap8(VOID);
 extern VOID __cdecl KiTrap2(VOID);
 extern VOID __cdecl KiFastCallEntry(VOID);
@@ -152,6 +155,7 @@ extern UCHAR KiDebugRegisterContextOffsets[9];
 extern ULONG KeTimeIncrement;
 extern ULONG_PTR KiBugCheckData[5];
 extern ULONG KiFreezeFlag;
+extern ULONG KiDPCTimeout;
 
 /* MACROS *************************************************************************/
 
@@ -169,10 +173,6 @@ extern ULONG KiFreezeFlag;
     InitializeListHead(&((Header)->WaitListHead));                          \
 }
 
-#define KEBUGCHECKWITHTF(a,b,c,d,e,f) \
-    DbgPrint("KeBugCheckWithTf at %s:%i\n",__FILE__,__LINE__), \
-             KeBugCheckWithTf(a,b,c,d,e,f)
-
 /* Tells us if the Timer or Event is a Syncronization or Notification Object */
 #define TIMER_OR_EVENT_TYPE 0x7L
 
@@ -192,7 +192,7 @@ extern ULONG KiFreezeFlag;
 /* INTERNAL KERNEL FUNCTIONS ************************************************/
 
 /* Finds a new thread to run */
-NTSTATUS
+LONG_PTR
 FASTCALL
 KiSwapThread(
     IN PKTHREAD Thread,
@@ -247,6 +247,18 @@ VOID
 NTAPI
 KiDeferredReadyThread(IN PKTHREAD Thread);
 
+PKTHREAD
+FASTCALL
+KiIdleSchedule(
+    IN PKPRCB Prcb
+);
+
+VOID
+FASTCALL
+KiProcessDeferredReadyList(
+    IN PKPRCB Prcb
+);
+
 KAFFINITY
 FASTCALL
 KiSetAffinityThread(
@@ -274,6 +286,13 @@ KiInsertTimerTable(
     IN ULONG Hand
 );
 
+VOID
+FASTCALL
+KiTimerListExpire(
+    IN PLIST_ENTRY ExpiredListHead,
+    IN KIRQL OldIrql
+);
+
 BOOLEAN
 FASTCALL
 KiInsertTreeTimer(
@@ -315,12 +334,35 @@ KeWaitForGate(
 /* ipi.c ********************************************************************/
 
 VOID
-NTAPI
-KiIpiSendRequest(
+FASTCALL
+KiIpiSend(
     KAFFINITY TargetSet,
     ULONG IpiRequest
 );
 
+VOID
+NTAPI
+KiIpiSendPacket(
+    IN KAFFINITY TargetProcessors,
+    IN PKIPI_WORKER WorkerFunction,
+    IN PKIPI_BROADCAST_WORKER BroadcastFunction,
+    IN ULONG_PTR Context,
+    IN PULONG Count
+);
+
+VOID
+FASTCALL
+KiIpiSignalPacketDone(
+    IN PKIPI_CONTEXT PacketContext
+);
+
+VOID
+FASTCALL
+KiIpiSignalPacketDoneAndStall(
+    IN PKIPI_CONTEXT PacketContext,
+    IN volatile PULONG ReverseStall
+);
+
 /* next file ***************************************************************/
 
 UCHAR
@@ -330,7 +372,7 @@ KeFindNextRightSetAffinity(
     IN ULONG Set
 );
 
-VOID 
+VOID
 NTAPI
 DbgBreakPointNoBugCheck(VOID);
 
@@ -523,7 +565,7 @@ VOID
 FASTCALL
 KiUnwaitThread(
     IN PKTHREAD Thread,
-    IN NTSTATUS WaitStatus,
+    IN LONG_PTR WaitStatus,
     IN KPRIORITY Increment
 );
 
@@ -533,7 +575,7 @@ KeInitializeProcess(
     struct _KPROCESS *Process,
     KPRIORITY Priority,
     KAFFINITY Affinity,
-    PLARGE_INTEGER DirectoryTableBase,
+    PULONG DirectoryTableBase,
     IN BOOLEAN Enable
 );
 
@@ -674,6 +716,11 @@ VOID
 FASTCALL
 KiActivateWaiterQueue(IN PKQUEUE Queue);
 
+ULONG
+NTAPI
+KeQueryRuntimeProcess(IN PKPROCESS Process,
+                      OUT PULONG UserTime);
+
 /* INITIALIZATION FUNCTIONS *************************************************/
 
 BOOLEAN
@@ -694,7 +741,7 @@ KiInitializeBugCheck(VOID);
 
 VOID
 NTAPI
-KiSystemStartup(
+KiSystemStartupReal(
     IN PLOADER_PARAMETER_BLOCK LoaderBlock
 );
 
@@ -738,10 +785,10 @@ VOID
 NTAPI
 KeBugCheckWithTf(
     ULONG BugCheckCode,
-    ULONG BugCheckParameter1,
-    ULONG BugCheckParameter2,
-    ULONG BugCheckParameter3,
-    ULONG BugCheckParameter4,
+    ULONG_PTR BugCheckParameter1,
+    ULONG_PTR BugCheckParameter2,
+    ULONG_PTR BugCheckParameter3,
+    ULONG_PTR BugCheckParameter4,
     PKTRAP_FRAME Tf
 );
 
@@ -749,10 +796,23 @@ VOID
 NTAPI
 KeFlushCurrentTb(VOID);
 
+BOOLEAN
+NTAPI
+KeInvalidateAllCaches(VOID);
+
+VOID
+FASTCALL
+KeZeroPages(IN PVOID Address,
+            IN ULONG Size);
+
+BOOLEAN
+FASTCALL
+KeInvalidAccessAllowed(IN PVOID TrapInformation OPTIONAL);
+
 VOID
 NTAPI
 KeRosDumpStackFrames(
-    PULONG Frame,
+    PULONG_PTR Frame,
     ULONG FrameCount
 );
 
@@ -821,11 +881,27 @@ KiInitializeMachineType(
     VOID
 );
 
+//
+// We need to do major portability work
+//
+#ifdef _M_IX86
 VOID
 NTAPI
 KiFlushNPXState(
     IN FLOATING_SAVE_AREA *SaveArea
 );
+#endif
+
+VOID
+NTAPI
+KiSetupStackAndInitializeKernel(
+    IN PKPROCESS InitProcess,
+    IN PKTHREAD InitThread,
+    IN PVOID IdleStack,
+    IN PKPRCB Prcb,
+    IN CCHAR Number,
+    IN PLOADER_PARAMETER_BLOCK LoaderBlock
+);
 
 VOID
 NTAPI
@@ -928,6 +1004,66 @@ KeDisableInterrupts(
     VOID
 );
 
+VOID
+FASTCALL
+KeAcquireQueuedSpinLockAtDpcLevel(
+    IN OUT PKSPIN_LOCK_QUEUE LockQueue
+);
+
+VOID
+FASTCALL
+KeReleaseQueuedSpinLockFromDpcLevel(
+    IN OUT PKSPIN_LOCK_QUEUE LockQueue
+);
+
+VOID
+NTAPI
+KiRestoreProcessorControlState(
+    IN PKPROCESSOR_STATE ProcessorState
+);
+
+VOID
+NTAPI
+KiSaveProcessorControlState(
+    OUT PKPROCESSOR_STATE ProcessorState
+);
+
+VOID
+FASTCALL
+KiRetireDpcList(
+    IN PKPRCB Prcb
+);
+
+VOID
+NTAPI
+KiQuantumEnd(
+    VOID
+);
+
+VOID
+KiSystemService(
+    IN PKTHREAD Thread,
+    IN PKTRAP_FRAME TrapFrame,
+    IN ULONG Instruction
+);
+
+VOID
+KiIdleLoop(
+    VOID
+);
+
+PVOID
+NTAPI
+KiPcToFileHeader(IN PVOID Eip,
+                 OUT PLDR_DATA_TABLE_ENTRY *LdrEntry,
+                 IN BOOLEAN DriversOnly,
+                 OUT PBOOLEAN InKernel);
+
+PVOID
+NTAPI
+KiRosPcToUserFileHeader(IN PVOID Eip,
+                        OUT PLDR_DATA_TABLE_ENTRY *LdrEntry);
+
 #include "ke_x.h"
 
 #endif /* __NTOSKRNL_INCLUDE_INTERNAL_KE_H */