Re-enabled stabs reading in the kernel debugger.
[reactos.git] / reactos / ntoskrnl / include / internal / kd.h
1 /* $Id: kd.h,v 1.21 2004/01/13 03:23:11 arty Exp $
2 *
3 * kernel debugger prototypes
4 */
5
6 #ifndef __INCLUDE_INTERNAL_KERNEL_DEBUGGER_H
7 #define __INCLUDE_INTERNAL_KERNEL_DEBUGGER_H
8
9 #include <internal/ke.h>
10 #include <internal/ldr.h>
11
12 #define KD_DEBUG_DISABLED 0x00
13 #define KD_DEBUG_GDB 0x01
14 #define KD_DEBUG_PICE 0x02
15 #define KD_DEBUG_SCREEN 0x04
16 #define KD_DEBUG_SERIAL 0x08
17 #define KD_DEBUG_BOCHS 0x10
18 #define KD_DEBUG_FILELOG 0x20
19 #define KD_DEBUG_MDA 0x40
20 #define KD_DEBUG_KDB 0x80
21 #define KD_DEBUG_KDSERIAL 0x100
22
23 extern ULONG KdDebugState;
24
25 KD_PORT_INFORMATION GdbPortInfo;
26 KD_PORT_INFORMATION LogPortInfo;
27
28 typedef enum _KD_CONTINUE_TYPE
29 {
30 kdContinue = 0,
31 kdDoNotHandleException,
32 kdHandleException
33 } KD_CONTINUE_TYPE;
34
35 ULONG
36 KdpPrintString (PANSI_STRING String);
37
38 VOID
39 DebugLogWrite(PCH String);
40 VOID
41 DebugLogInit(VOID);
42 VOID
43 DebugLogInit2(VOID);
44
45 VOID
46 KdInit1(VOID);
47
48 VOID
49 KdInit2(VOID);
50
51 VOID
52 KdInit3(VOID);
53
54 VOID
55 KdPutChar(UCHAR Value);
56
57 UCHAR
58 KdGetChar(VOID);
59
60 VOID
61 KdGdbStubInit(ULONG Phase);
62
63 VOID
64 KdGdbDebugPrint (LPSTR Message);
65
66 VOID
67 KdDebugPrint (LPSTR Message);
68
69 VOID
70 KdbCreateThreadHook(PCONTEXT Context);
71
72 KD_CONTINUE_TYPE
73 KdEnterDebuggerException(PEXCEPTION_RECORD ExceptionRecord,
74 PCONTEXT Context,
75 PKTRAP_FRAME TrapFrame);
76 VOID KdInitializeMda(VOID);
77 VOID KdPrintMda(PCH pch);
78
79 #ifndef KDBG
80 #define KDB_DELETEPROCESS_HOOK(PROCESS)
81 #define KDB_LOADDRIVER_HOOK(FILENAME, MODULE)
82 #define KDB_UNLOADDRIVER_HOOK(MODULE)
83 #define KDB_LOADERINIT_HOOK(NTOS, HAL)
84 #define KDB_SYMBOLFILE_HOOK(LOADBASE, FILENAME, LENGTH)
85 #define KDB_CREATE_THREAD_HOOK(CONTEXT)
86 #else
87 #define KDB_DELETEPROCESS_HOOK(PROCESS) KdbFreeSymbolsProcess(PROCESS)
88 #define KDB_LOADDRIVER_HOOK(FILENAME, MODULE) KdbLoadDriver(FILENAME, MODULE)
89 #define KDB_UNLOADDRIVER_HOOK(MODULE) KdbUnloadDriver(MODULE)
90 #define KDB_LOADERINIT_HOOK(NTOS, HAL) KdbLdrInit(NTOS, HAL)
91 #define KDB_SYMBOLFILE_HOOK(LOADBASE, FILENAME, LENGTH) \
92 KdbProcessSymbolFile(LOADBASE, FILENAME, LENGTH)
93 #define KDB_CREATE_THREAD_HOOK(CONTEXT) \
94 KdbCreateThreadHook(CONTEXT)
95 #endif /* KDBG */
96
97 VOID
98 KdbLdrLoadUserModuleSymbols(PLDR_MODULE LdrModule);
99 VOID
100 KdbProcessSymbolFile(PVOID ModuleLoadBase, PCHAR FileName, ULONG Length);
101 VOID
102 KdbLdrInit(MODULE_TEXT_SECTION* NtoskrnlTextSection,
103 MODULE_TEXT_SECTION* LdrHalTextSection);
104 VOID
105 KdbUnloadDriver(PMODULE_OBJECT ModuleObject);
106 VOID
107 KdbLoadDriver(PUNICODE_STRING Filename, PMODULE_OBJECT Module);
108 VOID
109 KdbFreeSymbolsProcess(PEPROCESS Process);
110 BOOLEAN
111 KdbPrintAddress(PVOID address);
112 KD_CONTINUE_TYPE
113 KdbEnterDebuggerException(PEXCEPTION_RECORD ExceptionRecord,
114 PCONTEXT Context,
115 PKTRAP_FRAME TrapFrame);
116
117 #endif /* __INCLUDE_INTERNAL_KERNEL_DEBUGGER_H */