2 * PROJECT: ReactOS Kernel
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: ntoskrnl/include/kd64.h
5 * PURPOSE: Internal header for the KD64 Library
6 * PROGRAMMERS: Alex Ionescu (alex.ionescu@reactos.org)
10 // Breakpoint Status Flags
12 typedef enum _KDP_BREAKPOINT_FLAGS
14 KdpBreakpointActive
= 1,
15 KdpBreakpointPending
= 2,
16 KdpBreakpointSuspended
= 4,
17 KdpBreakpointExpired
= 8
18 } KDP_BREAKPOINT_FLAGS
;
21 // Structure for Breakpoints
23 typedef struct _BREAKPOINT_ENTRY
29 } BREAKPOINT_ENTRY
, *PBREAKPOINT_ENTRY
;
32 // Debug and Multi-Processor Switch Routine Definitions
36 (NTAPI
*PKDEBUG_ROUTINE
)(
37 IN PKTRAP_FRAME TrapFrame
,
38 IN PKEXCEPTION_FRAME ExceptionFrame
,
39 IN PEXCEPTION_RECORD ExceptionRecord
,
41 IN KPROCESSOR_MODE PreviousMode
,
42 IN BOOLEAN SecondChance
47 (NTAPI
*PKDEBUG_SWITCH_ROUTINE
)(
48 IN PEXCEPTION_RECORD ExceptionRecord
,
50 IN BOOLEAN SecondChance
54 // Initialization Routines
60 PLOADER_PARAMETER_BLOCK LoaderBlock
70 // Multi-Processor Switch Support
75 IN PEXCEPTION_RECORD ExceptionRecord
,
76 IN OUT PCONTEXT ContextRecord
,
77 IN BOOLEAN SecondChanceException
91 KdpTimeSlipDpcRoutine(
93 IN PVOID DeferredContext
,
94 IN PVOID SystemArgument1
,
95 IN PVOID SystemArgument2
99 // Debug Trap Handlers
104 IN PKTRAP_FRAME TrapFrame
,
105 IN PKEXCEPTION_FRAME ExceptionFrame
,
106 IN PEXCEPTION_RECORD ExceptionRecord
,
107 IN PCONTEXT ContextRecord
,
108 IN KPROCESSOR_MODE PreviousMode
,
109 IN BOOLEAN SecondChanceException
115 IN PKTRAP_FRAME TrapFrame
,
116 IN PKEXCEPTION_FRAME ExceptionFrame
,
117 IN PEXCEPTION_RECORD ExceptionRecord
,
118 IN PCONTEXT ContextRecord
,
119 IN KPROCESSOR_MODE PreviousMode
,
120 IN BOOLEAN SecondChanceException
140 KdpPollBreakInWithPortLock(
145 // Debugger Enable, Enter and Exit
150 IN PKTRAP_FRAME TrapFrame
,
151 IN PKEXCEPTION_FRAME ExceptionFrame
162 KdEnableDebuggerWithLock(
167 // Debug Event Handlers
172 IN ULONG ComponentId
,
173 IN ULONG ComponentMask
,
176 IN KPROCESSOR_MODE PreviousMode
,
177 IN PKTRAP_FRAME TrapFrame
,
178 IN PKEXCEPTION_FRAME ExceptionFrame
,
186 IN USHORT InStringLength
,
188 IN USHORT OutStringLength
,
189 IN KPROCESSOR_MODE PreviousMode
,
190 IN PKTRAP_FRAME TrapFrame
,
191 IN PKEXCEPTION_FRAME ExceptionFrame
198 IN PKD_SYMBOLS_INFO DllBase
,
200 IN KPROCESSOR_MODE PreviousMode
,
201 IN PCONTEXT ContextRecord
,
202 IN PKTRAP_FRAME TrapFrame
,
203 IN PKEXCEPTION_FRAME ExceptionFrame
211 IN KPROCESSOR_MODE PreviousMode
,
212 IN PCONTEXT ContextRecord
,
213 IN PKTRAP_FRAME TrapFrame
,
214 IN PKEXCEPTION_FRAME ExceptionFrame
218 // State Change Notifications
222 KdpReportLoadSymbolsStateChange(
224 IN PKD_SYMBOLS_INFO SymbolInfo
,
226 IN OUT PCONTEXT Context
231 KdpReportExceptionStateChange(
232 IN PEXCEPTION_RECORD ExceptionRecord
,
233 IN OUT PCONTEXT Context
,
234 IN BOOLEAN SecondChanceException
238 // Breakpoint Support
242 KdpRestoreAllBreakpoints(
254 KdpDeleteBreakpointRange(
266 // Internal routine for sending strings directly to the debugger
278 extern DBGKD_GET_VERSION64 KdVersionBlock
;
279 extern KDDEBUGGER_DATA64 KdDebuggerDataBlock
;
280 extern LIST_ENTRY KdpDebuggerDataListHead
;
281 extern KSPIN_LOCK KdpDataSpinLock
;
282 extern LARGE_INTEGER KdPerformanceCounterRate
;
283 extern LARGE_INTEGER KdTimerStart
;
284 extern ULONG KdDisableCount
;
285 extern KD_CONTEXT KdpContext
;
286 extern PKDEBUG_ROUTINE KiDebugRoutine
;
287 extern PKDEBUG_SWITCH_ROUTINE KiDebugSwitchRoutine
;
288 extern BOOLEAN KdBreakAfterSymbolLoad
;
289 extern BOOLEAN KdPitchDebugger
;
290 extern BOOLEAN _KdDebuggerNotPresent
;
291 extern BOOLEAN _KdDebuggerEnabled
;
292 extern BOOLEAN KdAutoEnableOnEvent
;
293 extern BOOLEAN KdPreviouslyEnabled
;
294 extern BOOLEAN KdpDebuggerStructuresInitialized
;
295 extern BOOLEAN KdEnteredDebugger
;
296 extern KDPC KdpTimeSlipDpc
;
297 extern KTIMER KdpTimeSlipTimer
;
298 extern WORK_QUEUE_ITEM KdpTimeSlipWorkItem
;
299 extern LONG KdpTimeSlipPending
;
300 extern PKEVENT KdpTimeSlipEvent
;
301 extern KSPIN_LOCK KdpTimeSlipEventLock
;
302 extern BOOLEAN KdpPortLocked
;
303 extern BOOLEAN KdpControlCPressed
;
304 extern KSPIN_LOCK KdpDebuggerLock
;
305 extern LARGE_INTEGER KdTimerStop
, KdTimerStart
, KdTimerDifference
;
306 extern ULONG KdComponentTableSize
;
307 extern ULONG Kd_WIN2000_Mask
;
308 extern PULONG KdComponentTable
[104];
309 extern CHAR KdpMessageBuffer
[4096], KdpPathBuffer
[4096];
310 extern BREAKPOINT_ENTRY KdpBreakpointTable
[20];
311 extern ULONG KdpBreakpointInstruction
;
312 extern BOOLEAN KdpOweBreakpoint
;
313 extern BOOLEAN BreakpointsSuspended
;
314 extern ULONG KdpNumInternalBreakpoints
;
315 extern ULONG KdpCurrentSymbolStart
, KdpCurrentSymbolEnd
;
316 extern ULONG TraceDataBuffer
[40];
317 extern ULONG TraceDataBufferPosition
;