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

kd.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 doxygen 1.7.6.1

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