- Add kd64 folder for KD64 6.0 implementation.
[reactos.git] / reactos / ntoskrnl / include / internal / kd.h
index d05f2b9..699e0f0 100644 (file)
-/* $Id$
- *
- * kernel debugger prototypes
- */
-
-#ifndef __INCLUDE_INTERNAL_KERNEL_DEBUGGER_H
-#define __INCLUDE_INTERNAL_KERNEL_DEBUGGER_H
-
-#include <internal/ke.h>
-#include <internal/ldr.h>
-#include <ntdll/ldr.h>
-
-#define KD_DEBUG_DISABLED      0x00
-#define KD_DEBUG_GDB           0x01
-#define KD_DEBUG_PICE          0x02
-#define KD_DEBUG_SCREEN                0x04
-#define KD_DEBUG_SERIAL                0x08
-#define KD_DEBUG_BOCHS         0x10
-#define KD_DEBUG_BOOTLOG       0x20
-#define KD_DEBUG_MDA            0x40
-#define KD_DEBUG_KDB            0x80
-#define KD_DEBUG_KDSERIAL       0x100
-#define KD_DEBUG_KDNOECHO       0x200
-
-extern ULONG KdDebugState;
-
-KD_PORT_INFORMATION GdbPortInfo;
-KD_PORT_INFORMATION LogPortInfo;
-
-typedef enum _KD_CONTINUE_TYPE
-{
-  kdContinue = 0,
-  kdDoNotHandleException,
-  kdHandleException
-} KD_CONTINUE_TYPE;
-
-VOID
-KbdDisableMouse();
+typedef
+BOOLEAN
+(NTAPI *PKDEBUG_ROUTINE)(
+    IN PKTRAP_FRAME TrapFrame,
+    IN PKEXCEPTION_FRAME ExceptionFrame,
+    IN PEXCEPTION_RECORD ExceptionRecord,
+    IN PCONTEXT Context,
+    IN KPROCESSOR_MODE PreviousMode,
+    IN BOOLEAN SecondChance
+);
+
+typedef
+BOOLEAN
+(NTAPI *PKDEBUG_SWITCH_ROUTINE)(
+    IN PEXCEPTION_RECORD ExceptionRecord,
+    IN PCONTEXT Context,
+    IN BOOLEAN SecondChance
+);
 
-VOID
-KbdEnableMouse();
+BOOLEAN
+NTAPI
+KdpEnterDebuggerException(
+    IN PKTRAP_FRAME TrapFrame,
+    IN PKEXCEPTION_FRAME ExceptionFrame,
+    IN PEXCEPTION_RECORD ExceptionRecord,
+    IN PCONTEXT Context,
+    IN KPROCESSOR_MODE PreviousMode,
+    IN BOOLEAN SecondChance
+);
+
+VOID
+NTAPI
+KdpTimeSlipWork(
+    IN PVOID Context
+);
 
-ULONG
-KdpPrintString (PANSI_STRING String);
+BOOLEAN
+NTAPI
+KdpSwitchProcessor(
+    IN PEXCEPTION_RECORD ExceptionRecord,
+    IN OUT PCONTEXT ContextRecord,
+    IN BOOLEAN SecondChanceException
+);
+
+VOID
+NTAPI
+KdpTimeSlipDpcRoutine(
+    IN PKDPC Dpc,
+    IN PVOID DeferredContext,
+    IN PVOID SystemArgument1,
+    IN PVOID SystemArgument2
+);
 
-VOID
-DebugLogWrite(PCH String);
-VOID
-DebugLogInit(VOID);
-VOID
-DebugLogInit2(VOID);
+BOOLEAN
+NTAPI
+KdpStub(
+    IN PKTRAP_FRAME TrapFrame,
+    IN PKEXCEPTION_FRAME ExceptionFrame,
+    IN PEXCEPTION_RECORD ExceptionRecord,
+    IN PCONTEXT ContextRecord,
+    IN KPROCESSOR_MODE PreviousMode,
+    IN BOOLEAN SecondChanceException
+);
 
-VOID
-STDCALL
-KdDisableDebugger(
+BOOLEAN
+NTAPI
+KdpTrap(
+    IN PKTRAP_FRAME TrapFrame,
+    IN PKEXCEPTION_FRAME ExceptionFrame,
+    IN PEXCEPTION_RECORD ExceptionRecord,
+    IN PCONTEXT ContextRecord,
+    IN KPROCESSOR_MODE PreviousMode,
+    IN BOOLEAN SecondChanceException
+);
+
+VOID
+NTAPI
+KdpPortLock(
     VOID
-    );
+);
 
 VOID
-STDCALL
-KdEnableDebugger(
+NTAPI
+KdpPortUnlock(
     VOID
-    );
-
-NTSTATUS
-STDCALL
-KdPowerTransition(
-       ULONG PowerState
-       );
+);
 
 BOOLEAN
-STDCALL
-KeIsAttachedProcess(
-       VOID
-       );
+NTAPI
+KdEnterDebugger(
+    IN PKTRAP_FRAME TrapFrame,
+    IN PKEXCEPTION_FRAME ExceptionFrame
+);
 
 VOID
-KdInit1(VOID);
-
-VOID
-KdInit2(VOID);
-
-VOID
-KdInit3(VOID);
-
-VOID
-KdPutChar(UCHAR Value);
-
-UCHAR
-KdGetChar(VOID);
+NTAPI
+KdExitDebugger(
+    IN BOOLEAN Entered
+);
 
-VOID
-KdGdbStubInit(ULONG Phase);
-
-VOID
-KdGdbDebugPrint (LPSTR Message);
-
-VOID
-KdDebugPrint (LPSTR Message);
-
-VOID
-KdbCreateThreadHook(PCONTEXT Context);
-
-KD_CONTINUE_TYPE
-KdEnterDebuggerException(PEXCEPTION_RECORD ExceptionRecord,
-                        PCONTEXT Context,
-                        PKTRAP_FRAME TrapFrame);
-VOID KdInitializeMda(VOID);
-VOID KdPrintMda(PCH pch);
-
-#if !defined(KDBG) && !defined(DBG)
-# define KDB_LOADUSERMODULE_HOOK(LDRMOD) do { } while (0)
-# define KDB_DELETEPROCESS_HOOK(PROCESS) do { } while (0)
-# define KDB_LOADDRIVER_HOOK(FILENAME, MODULE) do { } while (0)
-# define KDB_UNLOADDRIVER_HOOK(MODULE) do { } while (0)
-# define KDB_LOADERINIT_HOOK(NTOS, HAL) do { } while (0)
-# define KDB_SYMBOLFILE_HOOK(LOADBASE, FILENAME, LENGTH) do { } while (0)
-# define KDB_CREATE_THREAD_HOOK(CONTEXT) do { } while (0)
-#else
-# define KDB_LOADUSERMODULE_HOOK(LDRMOD) KdbSymLoadUserModuleSymbols(LDRMOD)
-# define KDB_DELETEPROCESS_HOOK(PROCESS) KdbSymFreeProcessSymbols(PROCESS)
-# define KDB_LOADDRIVER_HOOK(FILENAME, MODULE) KdbSymLoadDriverSymbols(FILENAME, MODULE)
-# define KDB_UNLOADDRIVER_HOOK(MODULE) KdbSymUnloadDriverSymbols(MODULE)
-# define KDB_LOADERINIT_HOOK(NTOS, HAL) KdbSymInit(NTOS, HAL)
-# define KDB_SYMBOLFILE_HOOK(LOADBASE, FILENAME, LENGTH) \
-        KdbSymProcessSymbolFile(LOADBASE, FILENAME, LENGTH)
-/*#define KDB_CREATE_THREAD_HOOK(CONTEXT) \
-        KdbCreateThreadHook(CONTEXT)
-*/
-VOID
-KdbSymLoadUserModuleSymbols(IN PLDR_MODULE LdrModule);
-
-VOID
-KdbSymFreeProcessSymbols(IN PEPROCESS Process);
-
-VOID
-KdbSymLoadDriverSymbols(IN PUNICODE_STRING Filename,
-                        IN PMODULE_OBJECT Module);
-
-VOID
-KdbSymUnloadDriverSymbols(IN PMODULE_OBJECT ModuleObject);
-
-VOID
-KdbSymProcessSymbolFile(IN PVOID ModuleLoadBase,
-                        IN PCHAR FileName,
-                        IN ULONG Length);
-
-VOID
-KdbSymInit(IN PMODULE_TEXT_SECTION NtoskrnlTextSection,
-           IN PMODULE_TEXT_SECTION LdrHalTextSection);
-
-
-BOOLEAN 
-KdbSymPrintAddress(IN PVOID Address);
-
-KD_CONTINUE_TYPE
-KdbEnterDebuggerException(PEXCEPTION_RECORD ExceptionRecord,
-                         KPROCESSOR_MODE PreviousMode,
-                          PCONTEXT Context,
-                          PKTRAP_FRAME TrapFrame,
-                         BOOLEAN HandleAlways);
-
-#endif /* KDBG || DBG */
-
-VOID
-DebugLogDumpMessages(VOID);
+NTSTATUS
+NTAPI
+KdEnableDebuggerWithLock(
+    IN BOOLEAN NeedLock
+);
+
+extern DBGKD_GET_VERSION64 KdVersionBlock;
+extern KDDEBUGGER_DATA64 KdDebuggerDataBlock;
+extern LIST_ENTRY KdpDebuggerDataListHead;
+extern KSPIN_LOCK KdpDataSpinLock;
+extern LARGE_INTEGER KdPerformanceCounterRate;
+extern LARGE_INTEGER KdTimerStart;
+extern ULONG KdDisableCount;
+extern KD_CONTEXT KdpContext;
+extern PKDEBUG_ROUTINE KiDebugRoutine;
+extern PKDEBUG_SWITCH_ROUTINE KiDebugSwitchRoutine;
+extern BOOLEAN KdBreakAfterSymbolLoad;
+extern BOOLEAN KdPitchDebugger;
+extern BOOLEAN _KdDebuggerNotPresent;
+extern BOOLEAN _KdDebuggerEnabled;
+extern BOOLEAN KdAutoEnableOnEvent;
+extern BOOLEAN KdPreviouslyEnabled;
+extern BOOLEAN KdpDebuggerStructuresInitialized;
+extern BOOLEAN KdEnteredDebugger;
+extern KDPC KdpTimeSlipDpc;
+extern KTIMER KdpTimeSlipTimer;
+extern WORK_QUEUE_ITEM KdpTimeSlipWorkItem;
+extern LONG KdpTimeSlipPending;
+extern PKEVENT KdpTimeSlipEvent;
+extern KSPIN_LOCK KdpTimeSlipEventLock;
+extern BOOLEAN KdpControlCPressed;
+extern BOOLEAN KdpControlCWaiting;
+extern BOOLEAN KdpPortLocked;
+extern KSPIN_LOCK KdpDebuggerLock;
+extern LARGE_INTEGER KdTimerStop, KdTimerStart, KdTimerDifference;
 
-#endif /* __INCLUDE_INTERNAL_KERNEL_DEBUGGER_H */