Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenkd.h
Go to the documentation of this file.
00001 #pragma once 00002 00003 #ifdef _M_PPC 00004 #define KdDebuggerEnabled _KdDebuggerEnabled 00005 #define KdDebuggerNotPresent _KdDebuggerNotPresent 00006 #endif 00007 00008 // 00009 // Kernel Debugger Port Definition 00010 // 00011 typedef struct _KD_PORT_INFORMATION 00012 { 00013 ULONG ComPort; 00014 ULONG BaudRate; 00015 ULONG BaseAddress; 00016 } KD_PORT_INFORMATION, *PKD_PORT_INFORMATION; 00017 00018 struct _KD_DISPATCH_TABLE; 00019 extern KD_PORT_INFORMATION GdbPortInfo; 00020 extern BOOLEAN _KdDebuggerEnabled; 00021 extern BOOLEAN _KdDebuggerNotPresent; 00022 extern BOOLEAN KdBreakAfterSymbolLoad; 00023 extern BOOLEAN KdPitchDebugger; 00024 extern BOOLEAN KdIgnoreUmExceptions; 00025 00026 BOOLEAN 00027 NTAPI 00028 KdPortInitialize( 00029 PKD_PORT_INFORMATION PortInformation, 00030 ULONG Unknown1, 00031 ULONG Unknown2 00032 ); 00033 00034 BOOLEAN 00035 NTAPI 00036 KdPortInitializeEx( 00037 PKD_PORT_INFORMATION PortInformation, 00038 ULONG Unknown1, 00039 ULONG Unknown2 00040 ); 00041 00042 BOOLEAN 00043 NTAPI 00044 KdPortGetByte( 00045 PUCHAR ByteRecieved); 00046 00047 BOOLEAN 00048 NTAPI 00049 KdPortGetByteEx( 00050 PKD_PORT_INFORMATION PortInformation, 00051 PUCHAR ByteRecieved); 00052 00053 VOID 00054 NTAPI 00055 KdPortPutByte( 00056 UCHAR ByteToSend 00057 ); 00058 00059 VOID 00060 NTAPI 00061 KdPortPutByteEx( 00062 PKD_PORT_INFORMATION PortInformation, 00063 UCHAR ByteToSend 00064 ); 00065 00066 /* SYMBOL ROUTINES **********************************************************/ 00067 #ifdef __NTOSKRNL__ 00068 00069 #if defined(KDBG) || DBG 00070 00071 VOID 00072 KdbSymProcessSymbols( 00073 IN PLDR_DATA_TABLE_ENTRY LdrEntry); 00074 00075 00076 BOOLEAN 00077 KdbSymPrintAddress( 00078 IN PVOID Address, 00079 IN PKTRAP_FRAME Context 00080 ); 00081 00082 NTSTATUS 00083 KdbSymGetAddressInformation( 00084 IN PROSSYM_INFO RosSymInfo, 00085 IN ULONG_PTR RelativeAddress, 00086 #ifdef __ROS_DWARF__ 00087 IN PROSSYM_LINEINFO RosSymLineInfo 00088 #else 00089 OUT PULONG LineNumber OPTIONAL, 00090 OUT PCH FileName OPTIONAL, 00091 OUT PCH FunctionName OPTIONAL 00092 #endif 00093 ); 00094 #endif 00095 00096 #ifdef KDBG 00097 # define KdbInit() KdbpCliInit() 00098 # define KdbModuleLoaded(FILENAME) KdbpCliModuleLoaded(FILENAME) 00099 #else 00100 # define KdbEnterDebuggerException(ER, PM, C, TF, F) kdHandleException 00101 # define KdbInit() do { } while (0) 00102 # define KdbEnter() do { } while (0) 00103 # define KdbModuleLoaded(X) do { } while (0) 00104 #endif 00105 00106 /* KD ROUTINES ***************************************************************/ 00107 00108 typedef enum _KD_CONTINUE_TYPE 00109 { 00110 kdContinue = 0, 00111 kdDoNotHandleException, 00112 kdHandleException 00113 } 00114 KD_CONTINUE_TYPE; 00115 00116 typedef 00117 VOID 00118 (NTAPI*PKDP_INIT_ROUTINE)( 00119 struct _KD_DISPATCH_TABLE *DispatchTable, 00120 ULONG BootPhase 00121 ); 00122 00123 typedef 00124 VOID 00125 (NTAPI*PKDP_PRINT_ROUTINE)( 00126 LPSTR String, 00127 ULONG Length 00128 ); 00129 00130 typedef 00131 VOID 00132 (NTAPI*PKDP_PROMPT_ROUTINE)(PCH String); 00133 00134 typedef 00135 KD_CONTINUE_TYPE 00136 (NTAPI*PKDP_EXCEPTION_ROUTINE)( 00137 PEXCEPTION_RECORD ExceptionRecord, 00138 PCONTEXT Context, 00139 PKTRAP_FRAME TrapFrame 00140 ); 00141 00142 BOOLEAN 00143 NTAPI 00144 KdIsThisAKdTrap( 00145 IN PEXCEPTION_RECORD ExceptionRecord, 00146 IN PCONTEXT Context, 00147 IN KPROCESSOR_MODE PreviousMode 00148 ); 00149 00150 /* INIT ROUTINES *************************************************************/ 00151 00152 BOOLEAN 00153 NTAPI 00154 KdInitSystem( 00155 ULONG Reserved, 00156 PLOADER_PARAMETER_BLOCK LoaderBlock 00157 ); 00158 00159 VOID 00160 NTAPI 00161 KdpScreenInit( 00162 struct _KD_DISPATCH_TABLE *DispatchTable, 00163 ULONG BootPhase 00164 ); 00165 00166 VOID 00167 NTAPI 00168 KdpSerialInit( 00169 struct _KD_DISPATCH_TABLE *DispatchTable, 00170 ULONG BootPhase 00171 ); 00172 00173 VOID 00174 NTAPI 00175 KdpInitDebugLog( 00176 struct _KD_DISPATCH_TABLE *DispatchTable, 00177 ULONG BootPhase 00178 ); 00179 00180 VOID 00181 NTAPI 00182 KdpBochsInit( 00183 struct _KD_DISPATCH_TABLE *DispatchTable, 00184 ULONG BootPhase 00185 ); 00186 00187 VOID 00188 NTAPI 00189 KdpGdbStubInit( 00190 struct _KD_DISPATCH_TABLE *DispatchTable, 00191 ULONG BootPhase); 00192 00193 VOID 00194 NTAPI 00195 KdpKdbgInit( 00196 struct _KD_DISPATCH_TABLE *DispatchTable, 00197 ULONG BootPhase); 00198 00199 00200 /* KD ROUTINES ***************************************************************/ 00201 00202 BOOLEAN 00203 NTAPI 00204 KdpCallGdb( 00205 IN PKTRAP_FRAME TrapFrame, 00206 IN PEXCEPTION_RECORD ExceptionRecord, 00207 IN PCONTEXT Context 00208 ); 00209 00210 ULONG 00211 NTAPI 00212 KdpPrintString( 00213 LPSTR String, 00214 ULONG Length); 00215 00216 ULONG 00217 NTAPI 00218 KdpPrompt( 00219 IN LPSTR InString, 00220 IN USHORT InStringLength, 00221 OUT LPSTR OutString, 00222 IN USHORT OutStringLength 00223 ); 00224 00225 BOOLEAN 00226 NTAPI 00227 KdpDetectConflicts(PCM_RESOURCE_LIST DriverList); 00228 00229 VOID 00230 NTAPI 00231 KdpBochsDebugPrint( 00232 IN PCH Message, 00233 IN ULONG Length 00234 ); 00235 00236 BOOLEAN 00237 NTAPI 00238 KdpSafeReadMemory( 00239 IN ULONG_PTR Addr, 00240 IN LONG Len, 00241 OUT PVOID Value 00242 ); 00243 00244 BOOLEAN 00245 NTAPI 00246 KdpSafeWriteMemory( 00247 IN ULONG_PTR Addr, 00248 IN LONG Len, 00249 IN ULONGLONG Value 00250 ); 00251 00252 VOID 00253 NTAPI 00254 KdpEnableSafeMem(VOID); 00255 00256 00257 /* KD GLOBALS ***************************************************************/ 00258 00259 typedef 00260 BOOLEAN 00261 (NTAPI *PKDEBUG_ROUTINE)( 00262 IN PKTRAP_FRAME TrapFrame, 00263 IN PKEXCEPTION_FRAME ExceptionFrame, 00264 IN PEXCEPTION_RECORD ExceptionRecord, 00265 IN PCONTEXT Context, 00266 IN KPROCESSOR_MODE PreviousMode, 00267 IN BOOLEAN SecondChance 00268 ); 00269 00270 /* serial debug connection */ 00271 #define DEFAULT_DEBUG_PORT 2 /* COM2 */ 00272 #define DEFAULT_DEBUG_COM1_IRQ 4 /* COM1 IRQ */ 00273 #define DEFAULT_DEBUG_COM2_IRQ 3 /* COM2 IRQ */ 00274 #define DEFAULT_DEBUG_BAUD_RATE 115200 /* 115200 Baud */ 00275 00276 /* KD Native Modes */ 00277 #define KdScreen 0 00278 #define KdSerial 1 00279 #define KdFile 2 00280 #define KdBochs 3 00281 #define KdKdbg 4 00282 #define KdMax 5 00283 00284 /* KD Private Debug Modes */ 00285 typedef struct _KDP_DEBUG_MODE 00286 { 00287 union 00288 { 00289 struct 00290 { 00291 /* Native Modes */ 00292 UCHAR Screen :1; 00293 UCHAR Serial :1; 00294 UCHAR File :1; 00295 UCHAR Bochs :1; 00296 00297 /* Currently Supported Wrappers */ 00298 UCHAR Pice :1; 00299 UCHAR Gdb :1; 00300 }; 00301 00302 /* Generic Value */ 00303 ULONG Value; 00304 }; 00305 } 00306 KDP_DEBUG_MODE; 00307 00308 /* KD Internal Debug Services */ 00309 typedef enum _KDP_DEBUG_SERVICE 00310 { 00311 DumpNonPagedPool = 0x1e, /* a */ 00312 ManualBugCheck = 0x30, /* b */ 00313 DumpNonPagedPoolStats = 0x2e, /* c */ 00314 DumpNewNonPagedPool = 0x20, /* d */ 00315 DumpNewNonPagedPoolStats = 0x12, /* e */ 00316 DumpAllThreads = 0x21, /* f */ 00317 DumpUserThreads = 0x22, /* g */ 00318 KdSpare1 = 0x23, /* h */ 00319 KdSpare2 = 0x17, /* i */ 00320 KdSpare3 = 0x24, /* j */ 00321 EnterDebugger = 0x25, /* k */ 00322 ThatsWhatSheSaid = 69 /* FIGURE IT OUT */ 00323 } 00324 KDP_DEBUG_SERVICE; 00325 00326 /* Dispatch Table for Wrapper Functions */ 00327 typedef struct _KD_DISPATCH_TABLE 00328 { 00329 LIST_ENTRY KdProvidersList; 00330 PKDP_INIT_ROUTINE KdpInitRoutine; 00331 PKDP_PRINT_ROUTINE KdpPrintRoutine; 00332 PKDP_PROMPT_ROUTINE KdpPromptRoutine; 00333 PKDP_EXCEPTION_ROUTINE KdpExceptionRoutine; 00334 } 00335 KD_DISPATCH_TABLE, *PKD_DISPATCH_TABLE; 00336 00337 /* The current Debugging Mode */ 00338 extern KDP_DEBUG_MODE KdpDebugMode; 00339 00340 /* The current Port IRQ */ 00341 extern ULONG KdpPortIrq; 00342 00343 /* The current Port */ 00344 extern ULONG KdpPort; 00345 00346 /* Port Information for the Serial Native Mode */ 00347 extern KD_PORT_INFORMATION SerialPortInfo; 00348 00349 /* Init Functions for Native Providers */ 00350 extern PKDP_INIT_ROUTINE InitRoutines[KdMax]; 00351 00352 /* Wrapper Init Function */ 00353 extern PKDP_INIT_ROUTINE WrapperInitRoutine; 00354 00355 /* Dispatch Tables for Native Providers */ 00356 extern KD_DISPATCH_TABLE DispatchTable[KdMax]; 00357 00358 /* Dispatch Table for the Wrapper */ 00359 extern KD_DISPATCH_TABLE WrapperTable; 00360 00361 /* The KD Native Provider List */ 00362 extern LIST_ENTRY KdProviders; 00363 00364 /* Whether to enter KDB as early as possible or not */ 00365 extern BOOLEAN KdpEarlyBreak; 00366 00367 extern PKDEBUG_ROUTINE KiDebugRoutine; 00368 extern KD_CONTEXT KdpContext; 00369 extern ULONG Kd_WIN2000_Mask; 00370 00371 #endif 00372 00373 #if DBG 00374 #define ID_Win32PreServiceHook 'WSH0' 00375 #define ID_Win32PostServiceHook 'WSH1' 00376 typedef void (NTAPI *PKDBG_PRESERVICEHOOK)(ULONG, PULONG_PTR); 00377 typedef ULONG_PTR (NTAPI *PKDBG_POSTSERVICEHOOK)(ULONG, ULONG_PTR); 00378 extern PKDBG_PRESERVICEHOOK KeWin32PreServiceHook; 00379 extern PKDBG_POSTSERVICEHOOK KeWin32PostServiceHook; 00380 #endif Generated on Sun May 27 2012 04:37:14 for ReactOS by
1.7.6.1
|