- Fix KiDispatchException to unmask KI_EXCEPTION_INTERNAL when setting the exception...
[reactos.git] / reactos / ntoskrnl / include / internal / ke.h
index 447c26a..fcabe24 100644 (file)
@@ -37,12 +37,33 @@ typedef struct _DISPATCH_INFO
     PKINTERRUPT_ROUTINE *FlatDispatch;
 } DISPATCH_INFO, *PDISPATCH_INFO;
 
+typedef struct _KI_SAMPLE_MAP
+{
+    LARGE_INTEGER PerfStart;
+    LARGE_INTEGER PerfEnd;
+    LONGLONG PerfDelta;
+    LARGE_INTEGER PerfFreq;
+    LONGLONG TSCStart;
+    LONGLONG TSCEnd;
+    LONGLONG TSCDelta;
+    ULONG MHz;
+} KI_SAMPLE_MAP, *PKI_SAMPLE_MAP;
+
 typedef struct _KTIMER_TABLE_ENTRY
 {
     LIST_ENTRY Entry;
     ULARGE_INTEGER Time;
 } KTIMER_TABLE_ENTRY, *PKTIMER_TABLE_ENTRY;
 
+#define MAX_TIMER_DPCS                      16
+
+typedef struct _DPC_QUEUE_ENTRY
+{
+    PKDPC Dpc;
+    PKDEFERRED_ROUTINE Routine;
+    PVOID Context;
+} DPC_QUEUE_ENTRY, *PDPC_QUEUE_ENTRY;
+
 typedef PCHAR
 (NTAPI *PKE_BUGCHECK_UNICODE_TO_ANSI)(
     IN PUNICODE_STRING Unicode,
@@ -50,11 +71,6 @@ typedef PCHAR
     IN ULONG Length
 );
 
-struct _KIRQ_TRAPFRAME;
-struct _KPCR;
-struct _KPRCB;
-struct _KEXCEPTION_FRAME;
-
 extern ULONG_PTR MmFreeLdrFirstKrnlPhysAddr;
 extern ULONG_PTR MmFreeLdrLastKrnlPhysAddr;
 extern ULONG_PTR MmFreeLdrLastKernelAddress;
@@ -64,6 +80,8 @@ extern PVOID KeUserCallbackDispatcher;
 extern PVOID KeUserExceptionDispatcher;
 extern PVOID KeRaiseUserExceptionDispatcher;
 extern LARGE_INTEGER KeBootTime;
+extern ULONGLONG KeBootTimeBias;
+extern BOOLEAN ExCmosClockIsSane;
 extern ULONG KeI386NpxPresent;
 extern ULONG KeI386XMMIPresent;
 extern ULONG KeI386FxsrPresent;
@@ -108,12 +126,11 @@ extern LARGE_INTEGER KiTimeIncrementReciprocal;
 extern UCHAR KiTimeIncrementShiftCount;
 extern ULONG KiTimeLimitIsrMicroseconds;
 extern ULONG KiServiceLimit;
-extern LIST_ENTRY BugcheckCallbackListHead, BugcheckReasonCallbackListHead;
+extern LIST_ENTRY KeBugcheckCallbackListHead, KeBugcheckReasonCallbackListHead;
 extern KSPIN_LOCK BugCheckCallbackLock;
-extern KDPC KiExpireTimerDpc;
+extern KDPC KiTimerExpireDpc;
 extern KTIMER_TABLE_ENTRY KiTimerTableListHead[TIMER_TABLE_SIZE];
-extern LIST_ENTRY KiTimerListHead;
-extern KMUTEX KiGenericCallDpcMutex;
+extern FAST_MUTEX KiGenericCallDpcMutex;
 extern LIST_ENTRY KiProfileListHead, KiProfileSourceListHead;
 extern KSPIN_LOCK KiProfileLock;
 extern LIST_ENTRY KiProcessListHead;
@@ -132,6 +149,8 @@ extern PVOID KeUserExceptionDispatcher;
 extern PVOID KeRaiseUserExceptionDispatcher;
 extern UCHAR KiDebugRegisterTrapOffsets[9];
 extern UCHAR KiDebugRegisterContextOffsets[9];
+extern ULONG KeTimeIncrement;
+extern ULONG_PTR KiBugCheckData[5];
 
 /* MACROS *************************************************************************/
 
@@ -171,16 +190,6 @@ extern UCHAR KiDebugRegisterContextOffsets[9];
 
 /* INTERNAL KERNEL FUNCTIONS ************************************************/
 
-/* Readies a Thread for Execution. */
-BOOLEAN
-NTAPI
-KiDispatchThreadNoLock(ULONG NewThreadStatus);
-
-/* Readies a Thread for Execution. */
-VOID
-NTAPI
-KiDispatchThread(ULONG NewThreadStatus);
-
 /* Finds a new thread to run */
 NTSTATUS
 FASTCALL
@@ -195,14 +204,29 @@ KeReadyThread(
     IN PKTHREAD Thread
 );
 
+BOOLEAN
+NTAPI
+KeSetDisableBoostThread(
+    IN OUT PKTHREAD Thread,
+    IN BOOLEAN Disable
+);
+
+VOID
+NTAPI
+KeBalanceSetManager(IN PVOID Context);
+
 VOID
 NTAPI
 KiReadyThread(IN PKTHREAD Thread);
 
-NTSTATUS
+ULONG
 NTAPI
 KeSuspendThread(PKTHREAD Thread);
 
+BOOLEAN
+NTAPI
+KeReadStateThread(IN PKTHREAD Thread);
+
 BOOLEAN
 FASTCALL
 KiSwapContext(
@@ -223,19 +247,46 @@ NTAPI
 KiDeferredReadyThread(IN PKTHREAD Thread);
 
 KAFFINITY
-NTAPI
+FASTCALL
 KiSetAffinityThread(
     IN PKTHREAD Thread,
-    IN KAFFINITY Affinity,
-    IN PBOOLEAN Released // hack
+    IN KAFFINITY Affinity
 );
 
 PKTHREAD
-NTAPI
+FASTCALL
 KiSelectNextThread(
     IN PKPRCB Prcb
 );
 
+VOID
+NTAPI
+CPUID(
+    OUT ULONG CpuInfo[4],
+    IN ULONG InfoType
+);
+
+BOOLEAN
+FASTCALL
+KiInsertTimerTable(
+    IN PKTIMER Timer,
+    IN ULONG Hand
+);
+
+BOOLEAN
+FASTCALL
+KiInsertTreeTimer(
+    IN PKTIMER Timer,
+    IN LARGE_INTEGER Interval
+);
+
+VOID
+FASTCALL
+KiCompleteTimer(
+    IN PKTIMER Timer,
+    IN PKSPIN_LOCK_QUEUE LockQueue
+);
+
 /* gmutex.c ********************************************************************/
 
 VOID
@@ -329,10 +380,6 @@ KeProfileInterruptWithSource(
     IN KPROFILE_SOURCE Source
 );
 
-BOOLEAN
-NTAPI
-KiRosPrintAddress(PVOID Address);
-
 VOID
 NTAPI
 KeUpdateRunTime(
@@ -450,18 +497,10 @@ NTAPI
 KeQueryBasePriorityThread(IN PKTHREAD Thread);
 
 VOID
-NTAPI
+FASTCALL
 KiSetPriorityThread(
     IN PKTHREAD Thread,
-    IN KPRIORITY Priority,
-    IN PBOOLEAN Released // hack
-);
-
-BOOLEAN
-NTAPI
-KiDispatcherObjectWake(
-    DISPATCHER_HEADER* hdr,
-    KPRIORITY increment
+    IN KPRIORITY Priority
 );
 
 VOID
@@ -471,15 +510,6 @@ KiUnlinkThread(
     IN NTSTATUS WaitStatus
 );
 
-VOID
-NTAPI
-KeExpireTimers(
-    PKDPC Apc,
-    PVOID Arg1,
-    PVOID Arg2,
-    PVOID Arg3
-);
-
 VOID
 NTAPI
 KeDumpStackFrames(PULONG Frame);
@@ -541,13 +571,6 @@ BOOLEAN
 NTAPI
 KeDisableThreadApcQueueing(IN PKTHREAD Thread);
 
-BOOLEAN
-NTAPI
-KiInsertTimer(
-    PKTIMER Timer,
-    LARGE_INTEGER DueTime
-);
-
 VOID
 FASTCALL
 KiWaitTest(
@@ -577,6 +600,21 @@ KiInsertQueue(
     BOOLEAN Head
 );
 
+VOID
+NTAPI
+KiTimerExpiration(
+    IN PKDPC Dpc,
+    IN PVOID DeferredContext,
+    IN PVOID SystemArgument1,
+    IN PVOID SystemArgument2
+);
+
+ULONG
+NTAPI
+KiComputeTimerTableIndex(
+    IN LONGLONG TimeValue
+);
+
 ULONG
 NTAPI
 KeSetProcess(
@@ -653,10 +691,6 @@ VOID
 NTAPI
 KiInitializeBugCheck(VOID);
 
-VOID
-NTAPI
-KiInitializeSystemClock(VOID);
-
 VOID
 NTAPI
 KiSystemStartup(
@@ -723,7 +757,12 @@ KeRosDumpStackFrames(
 
 VOID
 NTAPI
-KiSetSystemTime(PLARGE_INTEGER NewSystemTime);
+KeSetSystemTime(
+    IN PLARGE_INTEGER NewSystemTime,
+    OUT PLARGE_INTEGER OldSystemTime,
+    IN BOOLEAN FixInterruptTime,
+    IN PLARGE_INTEGER HalTime
+);
 
 ULONG
 NTAPI
@@ -873,6 +912,15 @@ WRMSR(
     IN LONGLONG Value
 );
 
+BOOLEAN
+NTAPI
+KeFreezeExecution(IN PKTRAP_FRAME TrapFrame,
+                  IN PKEXCEPTION_FRAME ExceptionFrame);
+
+VOID
+NTAPI
+KeThawExecution(IN BOOLEAN Enable);
+
 #include "ke_x.h"
 
 #endif /* __NTOSKRNL_INCLUDE_INTERNAL_KE_H */