Fixed typo. Now can disable kernel debugger by setting KDBG = 0 in config.
[reactos.git] / reactos / ntoskrnl / include / internal / kd.h
1 /* $Id: kd.h,v 1.13 2002/07/19 03:56:47 ei 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
21 extern ULONG KdDebugState;
22
23 KD_PORT_INFORMATION GdbPortInfo;
24 KD_PORT_INFORMATION LogPortInfo;
25
26 typedef enum _KD_CONTINUE_TYPE
27 {
28 kdContinue = 0,
29 kdDoNotHandleException,
30 kdHandleException
31 } KD_CONTINUE_TYPE;
32
33 ULONG
34 KdpPrintString (PANSI_STRING String);
35
36 VOID
37 DebugLogWrite(PCH String);
38 VOID
39 DebugLogInit(VOID);
40 VOID
41 DebugLogInit2(VOID);
42
43 VOID
44 KdInit1(VOID);
45
46 VOID
47 KdInit2(VOID);
48
49 VOID
50 KdPutChar(UCHAR Value);
51
52 UCHAR
53 KdGetChar(VOID);
54
55 VOID
56 KdGdbStubInit();
57
58 VOID
59 KdGdbDebugPrint (LPSTR Message);
60
61 VOID
62 KdDebugPrint (LPSTR Message);
63
64 KD_CONTINUE_TYPE
65 KdEnterDebuggerException(PEXCEPTION_RECORD ExceptionRecord,
66 PCONTEXT Context,
67 PKTRAP_FRAME TrapFrame);
68 VOID KdInitializeMda(VOID);
69 VOID KdPrintMda(PCH pch);
70
71 #ifndef KDBG
72 #define KDB_DELETEPROCESS_HOOK(PROCESS)
73 #define KDB_LOADDRIVER_HOOK(FILENAME, MODULE)
74 #define KDB_UNLOADDRIVER_HOOK(MODULE)
75 #define KDB_LOADERINIT_HOOK(NTOS, HAL)
76 #define KDB_SYMBOLFILE_HOOK(LOADBASE, FILENAME, LENGTH)
77 #else
78 #define KDB_DELETEPROCESS_HOOK(PROCESS) KdbFreeSymbolsProcess(PROCESS)
79 #define KDB_LOADDRIVER_HOOK(FILENAME, MODULE) KdbLoadDriver(FILENAME, MODULE)
80 #define KDB_UNLOADDRIVER_HOOK(MODULE) KdbUnloadDriver(MODULE)
81 #define KDB_LOADERINIT_HOOK(NTOS, HAL) KdbLdrInit(NTOS, HAL)
82 #define KDB_SYMBOLFILE_HOOK(LOADBASE, FILENAME, LENGTH) \
83 KdbProcessSymbolFile(LOADBASE, FILENAME, LENGTH)
84 #endif /* KDBG */
85
86 VOID
87 KdbLdrLoadUserModuleSymbols(PLDR_MODULE LdrModule);
88 VOID
89 KdbProcessSymbolFile(PVOID ModuleLoadBase, PCHAR FileName, ULONG Length);
90 VOID
91 KdbLdrInit(MODULE_TEXT_SECTION* NtoskrnlTextSection,
92 MODULE_TEXT_SECTION* LdrHalTextSection);
93 VOID
94 KdbUnloadDriver(PMODULE_OBJECT ModuleObject);
95 VOID
96 KdbLoadDriver(PUNICODE_STRING Filename, PMODULE_OBJECT Module);
97 VOID
98 KdbFreeSymbolsProcess(PPEB Peb);
99 BOOLEAN
100 KdbPrintAddress(PVOID address);
101
102 #endif /* __INCLUDE_INTERNAL_KERNEL_DEBUGGER_H */