ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

kd64.h
Go to the documentation of this file.
00001 /*
00002  * PROJECT:         ReactOS Kernel
00003  * LICENSE:         GPL - See COPYING in the top level directory
00004  * FILE:            ntoskrnl/include/kd64.h
00005  * PURPOSE:         Internal header for the KD64 Library
00006  * PROGRAMMERS:     Alex Ionescu (alex.ionescu@reactos.org)
00007  */
00008 
00009 //
00010 // Maximum supported number of breakpoints
00011 //
00012 #define KD_BREAKPOINT_MAX                               32
00013 
00014 //
00015 // Default size of the DbgPrint log buffer
00016 //
00017 #if DBG
00018 #define KD_DEFAULT_LOG_BUFFER_SIZE                      0x8000
00019 #else
00020 #define KD_DEFAULT_LOG_BUFFER_SIZE                      0x1000
00021 #endif
00022 
00023 //
00024 // Breakpoint Status Flags
00025 //
00026 typedef enum _KDP_BREAKPOINT_FLAGS
00027 {
00028     KdpBreakpointActive = 1,
00029     KdpBreakpointPending = 2,
00030     KdpBreakpointSuspended = 4,
00031     KdpBreakpointExpired = 8
00032 } KDP_BREAKPOINT_FLAGS;
00033 
00034 //
00035 // Structure for Breakpoints
00036 //
00037 typedef struct _BREAKPOINT_ENTRY
00038 {
00039     ULONG Flags;
00040     PKPROCESS Process;
00041     PVOID Address;
00042     KD_BREAKPOINT_TYPE Content;
00043 } BREAKPOINT_ENTRY, *PBREAKPOINT_ENTRY;
00044 
00045 //
00046 // Debug and Multi-Processor Switch Routine Definitions
00047 //
00048 typedef
00049 BOOLEAN
00050 (NTAPI *PKDEBUG_ROUTINE)(
00051     IN PKTRAP_FRAME TrapFrame,
00052     IN PKEXCEPTION_FRAME ExceptionFrame,
00053     IN PEXCEPTION_RECORD ExceptionRecord,
00054     IN PCONTEXT Context,
00055     IN KPROCESSOR_MODE PreviousMode,
00056     IN BOOLEAN SecondChance
00057 );
00058 
00059 typedef
00060 BOOLEAN
00061 (NTAPI *PKDEBUG_SWITCH_ROUTINE)(
00062     IN PEXCEPTION_RECORD ExceptionRecord,
00063     IN PCONTEXT Context,
00064     IN BOOLEAN SecondChance
00065 );
00066 
00067 //
00068 // Initialization Routines
00069 //
00070 BOOLEAN
00071 NTAPI
00072 KdInitSystem(
00073     ULONG Reserved,
00074     PLOADER_PARAMETER_BLOCK LoaderBlock
00075 );
00076 
00077 VOID
00078 NTAPI
00079 KdUpdateDataBlock(
00080     VOID
00081 );
00082 
00083 //
00084 // Determines if the kernel debugger must handle a particular trap
00085 //
00086 BOOLEAN
00087 NTAPI
00088 KdIsThisAKdTrap(
00089     IN PEXCEPTION_RECORD ExceptionRecord,
00090     IN PCONTEXT Context,
00091     IN KPROCESSOR_MODE PreviousMode
00092 );
00093 
00094 //
00095 // Multi-Processor Switch Support
00096 //
00097 BOOLEAN
00098 NTAPI
00099 KdpSwitchProcessor(
00100     IN PEXCEPTION_RECORD ExceptionRecord,
00101     IN OUT PCONTEXT ContextRecord,
00102     IN BOOLEAN SecondChanceException
00103 );
00104 
00105 //
00106 // Time Slip Support
00107 //
00108 VOID
00109 NTAPI
00110 KdpTimeSlipWork(
00111     IN PVOID Context
00112 );
00113 
00114 VOID
00115 NTAPI
00116 KdpTimeSlipDpcRoutine(
00117     IN PKDPC Dpc,
00118     IN PVOID DeferredContext,
00119     IN PVOID SystemArgument1,
00120     IN PVOID SystemArgument2
00121 );
00122 
00123 //
00124 // Debug Trap Handlers
00125 //
00126 BOOLEAN
00127 NTAPI
00128 KdpStub(
00129     IN PKTRAP_FRAME TrapFrame,
00130     IN PKEXCEPTION_FRAME ExceptionFrame,
00131     IN PEXCEPTION_RECORD ExceptionRecord,
00132     IN PCONTEXT ContextRecord,
00133     IN KPROCESSOR_MODE PreviousMode,
00134     IN BOOLEAN SecondChanceException
00135 );
00136 
00137 BOOLEAN
00138 NTAPI
00139 KdpTrap(
00140     IN PKTRAP_FRAME TrapFrame,
00141     IN PKEXCEPTION_FRAME ExceptionFrame,
00142     IN PEXCEPTION_RECORD ExceptionRecord,
00143     IN PCONTEXT ContextRecord,
00144     IN KPROCESSOR_MODE PreviousMode,
00145     IN BOOLEAN SecondChanceException
00146 );
00147 
00148 //
00149 // Port Locking
00150 //
00151 VOID
00152 NTAPI
00153 KdpPortLock(
00154     VOID
00155 );
00156 
00157 VOID
00158 NTAPI
00159 KdpPortUnlock(
00160     VOID
00161 );
00162 
00163 BOOLEAN
00164 NTAPI
00165 KdpPollBreakInWithPortLock(
00166     VOID
00167 );
00168 
00169 //
00170 // Debugger Enter, Exit, Enable and Disable
00171 //
00172 BOOLEAN
00173 NTAPI
00174 KdEnterDebugger(
00175     IN PKTRAP_FRAME TrapFrame,
00176     IN PKEXCEPTION_FRAME ExceptionFrame
00177 );
00178 
00179 VOID
00180 NTAPI
00181 KdExitDebugger(
00182     IN BOOLEAN Enable
00183 );
00184 
00185 NTSTATUS
00186 NTAPI
00187 KdEnableDebuggerWithLock(
00188     IN BOOLEAN NeedLock
00189 );
00190 
00191 NTSTATUS
00192 NTAPI
00193 KdDisableDebuggerWithLock(
00194     IN BOOLEAN NeedLock
00195 );
00196 
00197 //
00198 // Debug Event Handlers
00199 //
00200 NTSTATUS
00201 NTAPI
00202 KdpPrint(
00203     IN ULONG ComponentId,
00204     IN ULONG Level,
00205     IN LPSTR String,
00206     IN USHORT Length,
00207     IN KPROCESSOR_MODE PreviousMode,
00208     IN PKTRAP_FRAME TrapFrame,
00209     IN PKEXCEPTION_FRAME ExceptionFrame,
00210     OUT PBOOLEAN Handled
00211 );
00212 
00213 USHORT
00214 NTAPI
00215 KdpPrompt(
00216     IN LPSTR PromptString,
00217     IN USHORT PromptLength,
00218     OUT LPSTR ResponseString,
00219     IN USHORT MaximumResponseLength,
00220     IN KPROCESSOR_MODE PreviousMode,
00221     IN PKTRAP_FRAME TrapFrame,
00222     IN PKEXCEPTION_FRAME ExceptionFrame
00223 );
00224 
00225 VOID
00226 NTAPI
00227 KdpSymbol(
00228     IN PSTRING DllPath,
00229     IN PKD_SYMBOLS_INFO SymbolInfo,
00230     IN BOOLEAN Unload,
00231     IN KPROCESSOR_MODE PreviousMode,
00232     IN PCONTEXT ContextRecord,
00233     IN PKTRAP_FRAME TrapFrame,
00234     IN PKEXCEPTION_FRAME ExceptionFrame
00235 );
00236 
00237 VOID
00238 NTAPI
00239 KdpCommandString(
00240     IN PSTRING NameString,
00241     IN PSTRING CommandString,
00242     IN KPROCESSOR_MODE PreviousMode,
00243     IN PCONTEXT ContextRecord,
00244     IN PKTRAP_FRAME TrapFrame,
00245     IN PKEXCEPTION_FRAME ExceptionFrame
00246 );
00247 
00248 //
00249 // State Change Notifications
00250 //
00251 VOID
00252 NTAPI
00253 KdpReportLoadSymbolsStateChange(
00254     IN PSTRING PathName,
00255     IN PKD_SYMBOLS_INFO SymbolInfo,
00256     IN BOOLEAN Unload,
00257     IN OUT PCONTEXT Context
00258 );
00259 
00260 VOID
00261 NTAPI
00262 KdpReportCommandStringStateChange(
00263     IN PSTRING NameString,
00264     IN PSTRING CommandString,
00265     IN OUT PCONTEXT Context
00266 );
00267 
00268 BOOLEAN
00269 NTAPI
00270 KdpReportExceptionStateChange(
00271     IN PEXCEPTION_RECORD ExceptionRecord,
00272     IN OUT PCONTEXT Context,
00273     IN BOOLEAN SecondChanceException
00274 );
00275 
00276 //
00277 // Breakpoint Support
00278 //
00279 ULONG
00280 NTAPI
00281 KdpAddBreakpoint(
00282     IN PVOID Address
00283 );
00284 
00285 BOOLEAN
00286 NTAPI
00287 KdpDeleteBreakpoint(
00288     IN ULONG BpEntry
00289 );
00290 
00291 BOOLEAN
00292 NTAPI
00293 KdpDeleteBreakpointRange(
00294     IN PVOID Base,
00295     IN PVOID Limit
00296 );
00297 
00298 VOID
00299 NTAPI
00300 KdpSuspendBreakPoint(
00301     IN ULONG BpEntry
00302 );
00303 
00304 VOID
00305 NTAPI
00306 KdpRestoreAllBreakpoints(
00307     VOID
00308 );
00309 
00310 VOID
00311 NTAPI
00312 KdpSuspendAllBreakPoints(
00313     VOID
00314 );
00315 
00316 //
00317 // Routine to determine if it is safe to disable the debugger
00318 //
00319 NTSTATUS
00320 NTAPI
00321 KdpAllowDisable(
00322     VOID
00323 );
00324 
00325 //
00326 // Safe memory read & write Support
00327 //
00328 NTSTATUS
00329 NTAPI
00330 KdpCopyMemoryChunks(
00331     IN ULONG64 Address,
00332     IN PVOID Buffer,
00333     IN ULONG TotalSize,
00334     IN ULONG ChunkSize,
00335     IN ULONG Flags,
00336     OUT PULONG ActualSize OPTIONAL
00337 );
00338 
00339 //
00340 // Low Level Support Routines for the KD API
00341 //
00342 
00343 //
00344 // Version
00345 //
00346 VOID
00347 NTAPI
00348 KdpSysGetVersion(
00349     IN PDBGKD_GET_VERSION64 Version
00350 );
00351 
00352 //
00353 // Context
00354 //
00355 VOID
00356 NTAPI
00357 KdpGetStateChange(
00358     IN PDBGKD_MANIPULATE_STATE64 State,
00359     IN PCONTEXT Context
00360 );
00361 
00362 VOID
00363 NTAPI
00364 KdpSetContextState(
00365     IN PDBGKD_ANY_WAIT_STATE_CHANGE WaitStateChange,
00366     IN PCONTEXT Context
00367 );
00368 
00369 //
00370 // MSR
00371 //
00372 NTSTATUS
00373 NTAPI
00374 KdpSysReadMsr(
00375     IN ULONG Msr,
00376     OUT PLARGE_INTEGER MsrValue
00377 );
00378 
00379 NTSTATUS
00380 NTAPI
00381 KdpSysWriteMsr(
00382     IN ULONG Msr,
00383     IN PLARGE_INTEGER MsrValue
00384 );
00385 
00386 //
00387 // Bus
00388 //
00389 NTSTATUS
00390 NTAPI
00391 KdpSysReadBusData(
00392     IN ULONG BusDataType,
00393     IN ULONG BusNumber,
00394     IN ULONG SlotNumber,
00395     IN ULONG Offset,
00396     IN PVOID Buffer,
00397     IN ULONG Length,
00398     OUT PULONG ActualLength
00399 );
00400 
00401 NTSTATUS
00402 NTAPI
00403 KdpSysWriteBusData(
00404     IN ULONG BusDataType,
00405     IN ULONG BusNumber,
00406     IN ULONG SlotNumber,
00407     IN ULONG Offset,
00408     IN PVOID Buffer,
00409     IN ULONG Length,
00410     OUT PULONG ActualLength
00411 );
00412 
00413 //
00414 // Control Space
00415 //
00416 NTSTATUS
00417 NTAPI
00418 KdpSysReadControlSpace(
00419     IN ULONG Processor,
00420     IN ULONG64 BaseAddress,
00421     IN PVOID Buffer,
00422     IN ULONG Length,
00423     OUT PULONG ActualLength
00424 );
00425 
00426 NTSTATUS
00427 NTAPI
00428 KdpSysWriteControlSpace(
00429     IN ULONG Processor,
00430     IN ULONG64 BaseAddress,
00431     IN PVOID Buffer,
00432     IN ULONG Length,
00433     OUT PULONG ActualLength
00434 );
00435 
00436 //
00437 // I/O Space
00438 //
00439 NTSTATUS
00440 NTAPI
00441 KdpSysReadIoSpace(
00442     IN ULONG InterfaceType,
00443     IN ULONG BusNumber,
00444     IN ULONG AddressSpace,
00445     IN ULONG64 IoAddress,
00446     IN PVOID DataValue,
00447     IN ULONG DataSize,
00448     OUT PULONG ActualDataSize
00449 );
00450 
00451 NTSTATUS
00452 NTAPI
00453 KdpSysWriteIoSpace(
00454     IN ULONG InterfaceType,
00455     IN ULONG BusNumber,
00456     IN ULONG AddressSpace,
00457     IN ULONG64 IoAddress,
00458     IN PVOID DataValue,
00459     IN ULONG DataSize,
00460     OUT PULONG ActualDataSize
00461 );
00462 
00463 //
00464 // Low Memory
00465 //
00466 NTSTATUS
00467 NTAPI
00468 KdpSysCheckLowMemory(
00469     IN ULONG Flags
00470 );
00471 
00472 //
00473 // Internal routine for sending strings directly to the debugger
00474 //
00475 VOID
00476 __cdecl
00477 KdpDprintf(
00478     IN PCHAR Format,
00479     ...
00480 );
00481 
00482 //
00483 // Global KD Data
00484 //
00485 extern DBGKD_GET_VERSION64 KdVersionBlock;
00486 extern KDDEBUGGER_DATA64 KdDebuggerDataBlock;
00487 extern LIST_ENTRY KdpDebuggerDataListHead;
00488 extern KSPIN_LOCK KdpDataSpinLock;
00489 extern LARGE_INTEGER KdPerformanceCounterRate;
00490 extern LARGE_INTEGER KdTimerStart;
00491 extern ULONG KdDisableCount;
00492 extern KD_CONTEXT KdpContext;
00493 extern PKDEBUG_ROUTINE KiDebugRoutine;
00494 extern PKDEBUG_SWITCH_ROUTINE KiDebugSwitchRoutine;
00495 extern BOOLEAN KdBreakAfterSymbolLoad;
00496 extern BOOLEAN KdPitchDebugger;
00497 extern BOOLEAN _KdDebuggerNotPresent;
00498 extern BOOLEAN _KdDebuggerEnabled;
00499 extern BOOLEAN KdAutoEnableOnEvent;
00500 extern BOOLEAN KdBlockEnable;
00501 extern BOOLEAN KdIgnoreUmExceptions;
00502 extern BOOLEAN KdPreviouslyEnabled;
00503 extern BOOLEAN KdpDebuggerStructuresInitialized;
00504 extern BOOLEAN KdEnteredDebugger;
00505 extern KDPC KdpTimeSlipDpc;
00506 extern KTIMER KdpTimeSlipTimer;
00507 extern WORK_QUEUE_ITEM KdpTimeSlipWorkItem;
00508 extern LONG KdpTimeSlipPending;
00509 extern PKEVENT KdpTimeSlipEvent;
00510 extern KSPIN_LOCK KdpTimeSlipEventLock;
00511 extern BOOLEAN KdpPortLocked;
00512 extern BOOLEAN KdpControlCPressed;
00513 extern BOOLEAN KdpContextSent;
00514 extern KSPIN_LOCK KdpDebuggerLock;
00515 extern LARGE_INTEGER KdTimerStop, KdTimerStart, KdTimerDifference;
00516 extern ULONG KdComponentTableSize;
00517 extern ULONG Kd_WIN2000_Mask;
00518 extern PULONG KdComponentTable[104];
00519 extern CHAR KdpMessageBuffer[0x1000], KdpPathBuffer[0x1000];
00520 extern CHAR KdPrintDefaultCircularBuffer[KD_DEFAULT_LOG_BUFFER_SIZE];
00521 extern BREAKPOINT_ENTRY KdpBreakpointTable[KD_BREAKPOINT_MAX];
00522 extern KD_BREAKPOINT_TYPE KdpBreakpointInstruction;
00523 extern BOOLEAN KdpOweBreakpoint;
00524 extern BOOLEAN BreakpointsSuspended;
00525 extern ULONG KdpNumInternalBreakpoints;
00526 extern ULONG_PTR KdpCurrentSymbolStart, KdpCurrentSymbolEnd;
00527 extern ULONG TraceDataBuffer[40];
00528 extern ULONG TraceDataBufferPosition;

Generated on Sun May 27 2012 04:37:14 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.