extern PULONG KiInterruptTemplateDispatch;
extern PULONG KiInterruptTemplate2ndDispatch;
extern ULONG KiUnexpectedEntrySize;
-#ifdef _M_IX86
+#if defined(_M_IX86) || defined(_M_AMD64)
extern PVOID Ki386IopmSaveArea;
extern ULONG KeI386EFlagsAndMaskV86;
extern ULONG KeI386EFlagsOrMaskV86;
#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;
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);
extern UCHAR KiDebugRegisterTrapOffsets[9];
extern UCHAR KiDebugRegisterContextOffsets[9];
extern ULONG KeTimeIncrement;
+extern ULONG KeTimeAdjustment;
extern ULONG_PTR KiBugCheckData[5];
extern ULONG KiFreezeFlag;
+extern ULONG KiDPCTimeout;
/* MACROS *************************************************************************/
{ \
(Header)->Type = t; \
(Header)->Absolute = 0; \
- (Header)->Inserted = 0; \
(Header)->Size = s; \
+ (Header)->Inserted = 0; \
(Header)->SignalState = State; \
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
/* INTERNAL KERNEL FUNCTIONS ************************************************/
/* Finds a new thread to run */
-NTSTATUS
+LONG_PTR
FASTCALL
KiSwapThread(
IN PKTHREAD Thread,
NTAPI
KiDeferredReadyThread(IN PKTHREAD Thread);
+PKTHREAD
+FASTCALL
+KiIdleSchedule(
+ IN PKPRCB Prcb
+);
+
+VOID
+FASTCALL
+KiProcessDeferredReadyList(
+ IN PKPRCB Prcb
+);
+
KAFFINITY
FASTCALL
KiSetAffinityThread(
IN ULONG Hand
);
+VOID
+FASTCALL
+KiTimerListExpire(
+ IN PLIST_ENTRY ExpiredListHead,
+ IN KIRQL OldIrql
+);
+
BOOLEAN
FASTCALL
KiInsertTreeTimer(
VOID
FASTCALL
-KiAcquireGuardedMutexContented(PKGUARDED_MUTEX GuardedMutex);
+KiAcquireGuardedMutex(
+ IN OUT PKGUARDED_MUTEX GuardedMutex
+);
+
+VOID
+FASTCALL
+KiAcquireFastMutex(
+ IN PFAST_MUTEX FastMutex
+);
/* gate.c **********************************************************************/
/* 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
IN ULONG Set
);
-VOID
+VOID
NTAPI
DbgBreakPointNoBugCheck(VOID);
FASTCALL
KiUnwaitThread(
IN PKTHREAD Thread,
- IN NTSTATUS WaitStatus,
+ IN LONG_PTR WaitStatus,
IN KPRIORITY Increment
);
struct _KPROCESS *Process,
KPRIORITY Priority,
KAFFINITY Affinity,
- PLARGE_INTEGER DirectoryTableBase,
+ PULONG DirectoryTableBase,
IN BOOLEAN Enable
);
FASTCALL
KiActivateWaiterQueue(IN PKQUEUE Queue);
+ULONG
+NTAPI
+KeQueryRuntimeProcess(IN PKPROCESS Process,
+ OUT PULONG UserTime);
+
/* INITIALIZATION FUNCTIONS *************************************************/
BOOLEAN
VOID
NTAPI
-KiSystemStartup(
+KiSystemStartupReal(
IN PLOADER_PARAMETER_BLOCK LoaderBlock
);
IN OUT PCONTEXT Context
);
+DECLSPEC_NORETURN
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
);
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
);
VOID
);
+//
+// We need to do major portability work
+//
+#ifdef _M_IX86
VOID
NTAPI
KiFlushNPXState(
IN FLOATING_SAVE_AREA *SaveArea
);
+#endif
VOID
NTAPI
KiI386PentiumLockErrataFixup(VOID);
VOID
+NTAPI
WRMSR(
IN ULONG Register,
IN LONGLONG Value
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 */