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
64 // Debug and Multi-Processor Switch Routines
68 KdpEnterDebuggerException(
69 IN PKTRAP_FRAME TrapFrame
,
70 IN PKEXCEPTION_FRAME ExceptionFrame
,
71 IN PEXCEPTION_RECORD ExceptionRecord
,
73 IN KPROCESSOR_MODE PreviousMode
,
74 IN BOOLEAN SecondChance
80 IN PEXCEPTION_RECORD ExceptionRecord
,
81 IN OUT PCONTEXT ContextRecord
,
82 IN BOOLEAN SecondChanceException
96 KdpTimeSlipDpcRoutine(
98 IN PVOID DeferredContext
,
99 IN PVOID SystemArgument1
,
100 IN PVOID SystemArgument2
104 // Debug Trap Handlers
109 IN PKTRAP_FRAME TrapFrame
,
110 IN PKEXCEPTION_FRAME ExceptionFrame
,
111 IN PEXCEPTION_RECORD ExceptionRecord
,
112 IN PCONTEXT ContextRecord
,
113 IN KPROCESSOR_MODE PreviousMode
,
114 IN BOOLEAN SecondChanceException
120 IN PKTRAP_FRAME TrapFrame
,
121 IN PKEXCEPTION_FRAME ExceptionFrame
,
122 IN PEXCEPTION_RECORD ExceptionRecord
,
123 IN PCONTEXT ContextRecord
,
124 IN KPROCESSOR_MODE PreviousMode
,
125 IN BOOLEAN SecondChanceException
145 KdpPollBreakInWithPortLock(
150 // Debugger Enable, Enter and Exit
155 IN PKTRAP_FRAME TrapFrame
,
156 IN PKEXCEPTION_FRAME ExceptionFrame
167 KdEnableDebuggerWithLock(
172 // Debug Event Handlers
177 IN ULONG ComponentId
,
178 IN ULONG ComponentMask
,
181 IN KPROCESSOR_MODE PreviousMode
,
182 IN PKTRAP_FRAME TrapFrame
,
183 IN PKEXCEPTION_FRAME ExceptionFrame
,
191 IN PKD_SYMBOLS_INFO DllBase
,
193 IN KPROCESSOR_MODE PreviousMode
,
194 IN PCONTEXT ContextRecord
,
195 IN PKTRAP_FRAME TrapFrame
,
196 IN PKEXCEPTION_FRAME ExceptionFrame
200 // State Change Notifications
204 KdpReportLoadSymbolsStateChange(
206 IN PKD_SYMBOLS_INFO SymbolInfo
,
208 IN OUT PCONTEXT Context
213 KdpReportExceptionStateChange(
214 IN PEXCEPTION_RECORD ExceptionRecord
,
215 IN OUT PCONTEXT Context
,
216 IN BOOLEAN SecondChanceException
220 // Breakpoint Support
224 KdpRestoreAllBreakpoints(
236 KdpDeleteBreakpointRange(
250 extern DBGKD_GET_VERSION64 KdVersionBlock
;
251 extern KDDEBUGGER_DATA64 KdDebuggerDataBlock
;
252 extern LIST_ENTRY KdpDebuggerDataListHead
;
253 extern KSPIN_LOCK KdpDataSpinLock
;
254 extern LARGE_INTEGER KdPerformanceCounterRate
;
255 extern LARGE_INTEGER KdTimerStart
;
256 extern ULONG KdDisableCount
;
257 extern KD_CONTEXT KdpContext
;
258 extern PKDEBUG_ROUTINE KiDebugRoutine
;
259 extern PKDEBUG_SWITCH_ROUTINE KiDebugSwitchRoutine
;
260 extern BOOLEAN KdBreakAfterSymbolLoad
;
261 extern BOOLEAN KdPitchDebugger
;
262 extern BOOLEAN _KdDebuggerNotPresent
;
263 extern BOOLEAN _KdDebuggerEnabled
;
264 extern BOOLEAN KdAutoEnableOnEvent
;
265 extern BOOLEAN KdPreviouslyEnabled
;
266 extern BOOLEAN KdpDebuggerStructuresInitialized
;
267 extern BOOLEAN KdEnteredDebugger
;
268 extern KDPC KdpTimeSlipDpc
;
269 extern KTIMER KdpTimeSlipTimer
;
270 extern WORK_QUEUE_ITEM KdpTimeSlipWorkItem
;
271 extern LONG KdpTimeSlipPending
;
272 extern PKEVENT KdpTimeSlipEvent
;
273 extern KSPIN_LOCK KdpTimeSlipEventLock
;
274 extern BOOLEAN KdpPortLocked
;
275 extern BOOLEAN KdpControlCPressed
;
276 extern KSPIN_LOCK KdpDebuggerLock
;
277 extern LARGE_INTEGER KdTimerStop
, KdTimerStart
, KdTimerDifference
;
278 extern ULONG KdComponentTableSize
;
279 extern ULONG Kd_WIN2000_Mask
;
280 extern PULONG KdComponentTable
[104];
281 extern CHAR KdpMessageBuffer
[4096], KdpPathBuffer
[4096];
282 extern BREAKPOINT_ENTRY KdpBreakpointTable
[20];
283 extern ULONG KdpBreakpointInstruction
;
284 extern BOOLEAN KdpOweBreakpoint
;
285 extern BOOLEAN BreakpointsSuspended
;
286 extern ULONG KdpNumInternalBreakpoints
;
287 extern ULONG KdpCurrentSymbolStart
, KdpCurrentSymbolEnd
;
288 extern ULONG TraceDataBuffer
[40];
289 extern ULONG TraceDataBufferPosition
;