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,
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;
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;
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;
extern PVOID KeRaiseUserExceptionDispatcher;
extern UCHAR KiDebugRegisterTrapOffsets[9];
extern UCHAR KiDebugRegisterContextOffsets[9];
+extern ULONG KeTimeIncrement;
+extern ULONG_PTR KiBugCheckData[5];
/* MACROS *************************************************************************/
/* 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
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(
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
IN KPROFILE_SOURCE Source
);
-BOOLEAN
-NTAPI
-KiRosPrintAddress(PVOID Address);
-
VOID
NTAPI
KeUpdateRunTime(
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
IN NTSTATUS WaitStatus
);
-VOID
-NTAPI
-KeExpireTimers(
- PKDPC Apc,
- PVOID Arg1,
- PVOID Arg2,
- PVOID Arg3
-);
-
VOID
NTAPI
KeDumpStackFrames(PULONG Frame);
NTAPI
KeDisableThreadApcQueueing(IN PKTHREAD Thread);
-BOOLEAN
-NTAPI
-KiInsertTimer(
- PKTIMER Timer,
- LARGE_INTEGER DueTime
-);
-
VOID
FASTCALL
KiWaitTest(
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(
NTAPI
KiInitializeBugCheck(VOID);
-VOID
-NTAPI
-KiInitializeSystemClock(VOID);
-
VOID
NTAPI
KiSystemStartup(
VOID
NTAPI
-KiSetSystemTime(PLARGE_INTEGER NewSystemTime);
+KeSetSystemTime(
+ IN PLARGE_INTEGER NewSystemTime,
+ OUT PLARGE_INTEGER OldSystemTime,
+ IN BOOLEAN FixInterruptTime,
+ IN PLARGE_INTEGER HalTime
+);
ULONG
NTAPI
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 */