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(
226 KdpDeleteBreakpointRange(
240 extern DBGKD_GET_VERSION64 KdVersionBlock
;
241 extern KDDEBUGGER_DATA64 KdDebuggerDataBlock
;
242 extern LIST_ENTRY KdpDebuggerDataListHead
;
243 extern KSPIN_LOCK KdpDataSpinLock
;
244 extern LARGE_INTEGER KdPerformanceCounterRate
;
245 extern LARGE_INTEGER KdTimerStart
;
246 extern ULONG KdDisableCount
;
247 extern KD_CONTEXT KdpContext
;
248 extern PKDEBUG_ROUTINE KiDebugRoutine
;
249 extern PKDEBUG_SWITCH_ROUTINE KiDebugSwitchRoutine
;
250 extern BOOLEAN KdBreakAfterSymbolLoad
;
251 extern BOOLEAN KdPitchDebugger
;
252 extern BOOLEAN _KdDebuggerNotPresent
;
253 extern BOOLEAN _KdDebuggerEnabled
;
254 extern BOOLEAN KdAutoEnableOnEvent
;
255 extern BOOLEAN KdPreviouslyEnabled
;
256 extern BOOLEAN KdpDebuggerStructuresInitialized
;
257 extern BOOLEAN KdEnteredDebugger
;
258 extern KDPC KdpTimeSlipDpc
;
259 extern KTIMER KdpTimeSlipTimer
;
260 extern WORK_QUEUE_ITEM KdpTimeSlipWorkItem
;
261 extern LONG KdpTimeSlipPending
;
262 extern PKEVENT KdpTimeSlipEvent
;
263 extern KSPIN_LOCK KdpTimeSlipEventLock
;
264 extern BOOLEAN KdpPortLocked
;
265 extern BOOLEAN KdpControlCPressed
;
266 extern KSPIN_LOCK KdpDebuggerLock
;
267 extern LARGE_INTEGER KdTimerStop
, KdTimerStart
, KdTimerDifference
;
268 extern ULONG KdComponentTableSize
;
269 extern ULONG Kd_WIN2000_Mask
;
270 extern PULONG KdComponentTable
[104];
271 extern CHAR KdpMessageBuffer
[4096], KdpPathBuffer
[4096];
272 extern BREAKPOINT_ENTRY KdpBreakpointTable
[20];
273 extern ULONG KdpBreakpointInstruction
;
274 extern BOOLEAN KdpOweBreakpoint
;
275 extern BOOLEAN BreakpointsSuspended
;
276 extern ULONG KdpNumInternalBreakpoints
;
277 extern ULONG KdpCurrentSymbolStart
, KdpCurrentSymbolEnd
;
278 extern ULONG TraceDataBuffer
[40];
279 extern ULONG TraceDataBufferPosition
;