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 // Debug and Multi-Processor Switch Routines
58 KdpEnterDebuggerException(
59 IN PKTRAP_FRAME TrapFrame
,
60 IN PKEXCEPTION_FRAME ExceptionFrame
,
61 IN PEXCEPTION_RECORD ExceptionRecord
,
63 IN KPROCESSOR_MODE PreviousMode
,
64 IN BOOLEAN SecondChance
70 IN PEXCEPTION_RECORD ExceptionRecord
,
71 IN OUT PCONTEXT ContextRecord
,
72 IN BOOLEAN SecondChanceException
86 KdpTimeSlipDpcRoutine(
88 IN PVOID DeferredContext
,
89 IN PVOID SystemArgument1
,
90 IN PVOID SystemArgument2
94 // Debug Trap Handlers
99 IN PKTRAP_FRAME TrapFrame
,
100 IN PKEXCEPTION_FRAME ExceptionFrame
,
101 IN PEXCEPTION_RECORD ExceptionRecord
,
102 IN PCONTEXT ContextRecord
,
103 IN KPROCESSOR_MODE PreviousMode
,
104 IN BOOLEAN SecondChanceException
110 IN PKTRAP_FRAME TrapFrame
,
111 IN PKEXCEPTION_FRAME ExceptionFrame
,
112 IN PEXCEPTION_RECORD ExceptionRecord
,
113 IN PCONTEXT ContextRecord
,
114 IN KPROCESSOR_MODE PreviousMode
,
115 IN BOOLEAN SecondChanceException
135 KdpPollBreakInWithPortLock(
140 // Debugger Enable, Enter and Exit
145 IN PKTRAP_FRAME TrapFrame
,
146 IN PKEXCEPTION_FRAME ExceptionFrame
157 KdEnableDebuggerWithLock(
162 // Debug Event Handlers
167 IN ULONG ComponentId
,
168 IN ULONG ComponentMask
,
171 IN KPROCESSOR_MODE PreviousMode
,
172 IN PKTRAP_FRAME TrapFrame
,
173 IN PKEXCEPTION_FRAME ExceptionFrame
,
181 IN PKD_SYMBOLS_INFO DllBase
,
183 IN KPROCESSOR_MODE PreviousMode
,
184 IN PCONTEXT ContextRecord
,
185 IN PKTRAP_FRAME TrapFrame
,
186 IN PKEXCEPTION_FRAME ExceptionFrame
190 // State Change Notifications
194 KdpReportLoadSymbolsStateChange(
196 IN PKD_SYMBOLS_INFO SymbolInfo
,
198 IN OUT PCONTEXT Context
203 KdpReportExceptionStateChange(
204 IN PEXCEPTION_RECORD ExceptionRecord
,
205 IN OUT PCONTEXT Context
,
206 IN BOOLEAN SecondChanceException
210 // Breakpoint Support
214 KdpRestoreAllBreakpoints(
227 extern DBGKD_GET_VERSION64 KdVersionBlock
;
228 extern KDDEBUGGER_DATA64 KdDebuggerDataBlock
;
229 extern LIST_ENTRY KdpDebuggerDataListHead
;
230 extern KSPIN_LOCK KdpDataSpinLock
;
231 extern LARGE_INTEGER KdPerformanceCounterRate
;
232 extern LARGE_INTEGER KdTimerStart
;
233 extern ULONG KdDisableCount
;
234 extern KD_CONTEXT KdpContext
;
235 extern PKDEBUG_ROUTINE KiDebugRoutine
;
236 extern PKDEBUG_SWITCH_ROUTINE KiDebugSwitchRoutine
;
237 extern BOOLEAN KdBreakAfterSymbolLoad
;
238 extern BOOLEAN KdPitchDebugger
;
239 extern BOOLEAN _KdDebuggerNotPresent
;
240 extern BOOLEAN _KdDebuggerEnabled
;
241 extern BOOLEAN KdAutoEnableOnEvent
;
242 extern BOOLEAN KdPreviouslyEnabled
;
243 extern BOOLEAN KdpDebuggerStructuresInitialized
;
244 extern BOOLEAN KdEnteredDebugger
;
245 extern KDPC KdpTimeSlipDpc
;
246 extern KTIMER KdpTimeSlipTimer
;
247 extern WORK_QUEUE_ITEM KdpTimeSlipWorkItem
;
248 extern LONG KdpTimeSlipPending
;
249 extern PKEVENT KdpTimeSlipEvent
;
250 extern KSPIN_LOCK KdpTimeSlipEventLock
;
251 extern BOOLEAN KdpControlCPressed
;
252 extern BOOLEAN KdpControlCWaiting
;
253 extern BOOLEAN KdpPortLocked
;
254 extern KSPIN_LOCK KdpDebuggerLock
;
255 extern LARGE_INTEGER KdTimerStop
, KdTimerStart
, KdTimerDifference
;
256 extern ULONG KdComponentTableSize
;
257 extern ULONG Kd_WIN2000_Mask
;
258 extern PULONG KdComponentTable
[104];
259 extern CHAR KdpMessageBuffer
[4096], KdpPathBuffer
[4096];
260 extern BREAKPOINT_ENTRY KdpBreakpointTable
[20];
261 extern ULONG KdpBreakpointInstruction
;
262 extern BOOLEAN KdpOweBreakpoint
;
263 extern BOOLEAN BreakpointsSuspended
;
264 extern ULONG KdpNumInternalBreakpoints
;
265 extern ULONG KdpCurrentSymbolStart
, KdpCurrentSymbolEnd
;