13#include <reactos/buildno.h>
23#define DbgPrint(fmt, ...) (KdpDprintf(fmt, ##__VA_ARGS__), 0)
24#define DbgPrintEx(cmpid, lvl, fmt, ...) (KdpDprintf(fmt, ##__VA_ARGS__), 0)
44 SIZE_T NumberOfPhysicalPages = 0;
58 for (ListEntry = LoaderBlock->MemoryDescriptorListHead.
Flink;
59 ListEntry != &LoaderBlock->MemoryDescriptorListHead;
60 ListEntry = ListEntry->
Flink)
75 NumberOfPhysicalPages +=
Descriptor->PageCount;
94 DPRINT1(
"-----------------------------------------------------\n");
95 DPRINT1(
"ReactOS " KERNEL_VERSION_STR
" (Build " KERNEL_VERSION_BUILD_STR
") (Commit " KERNEL_VERSION_COMMIT_HASH
")\n");
101 DPRINT1(
"ARC Paths: %s %s %s %s\n",
141 NextEntry = NextEntry->
Flink;
144 if ((CurrentHeader == DataHeader) || (CurrentHeader->
OwnerTag ==
Tag))
153 DataHeader->OwnerTag =
Tag;
154 DataHeader->Size =
Size;
228 PSTR CommandLine, DebugLine;
240 CommandLine = LoaderBlock->LoadOptions;
250 if (
strstr(CommandLine,
"CRASHDEBUG"))
255 else if (
strstr(CommandLine,
"NODEBUG"))
260 else if ((DebugLine =
strstr(CommandLine,
"DEBUG")))
266 if (DebugLine[5] ==
'=')
269 PSTR DebugOptionStart, DebugOptionEnd;
270 DebugOptionStart = DebugOptionEnd = &DebugLine[6];
281 if ((*DebugOptionEnd ==
',') ||
282 (*DebugOptionEnd ==
' ') ||
283 (*DebugOptionEnd ==
'\t'))
299 DebugOptionLength = (DebugOptionEnd - DebugOptionStart);
305 if (!DebugOptionLength)
309 if ((DebugOptionLength == 10) &&
310 !(
strncmp(DebugOptionStart,
"AUTOENABLE", 10)))
314 DisableKdAfterInit =
TRUE;
318 else if ((DebugOptionLength == 7) &&
319 !(
strncmp(DebugOptionStart,
"DISABLE", 7)))
322 DisableKdAfterInit =
TRUE;
326 else if ((DebugOptionLength == 6) &&
327 !(
strncmp(DebugOptionStart,
"NOUMEX", 6)))
337 if (*DebugOptionEnd !=
',')
342 DebugOptionStart = DebugOptionEnd;
410 if (DisableKdAfterInit)
430 CHAR NameBuffer[256];
433 for (NextEntry = LoaderBlock->LoadOrderListHead.
Flink,
i = 0;
434 NextEntry != &LoaderBlock->LoadOrderListHead && (
i < 2);
435 NextEntry = NextEntry->
Flink, ++
i)
#define ALIGN_UP_BY(size, align)
char * strstr(char *String1, char *String2)
int strncmp(const char *String1, const char *String2, ACPI_SIZE Count)
#define NT_SUCCESS(StatCode)
VOID NTAPI KeInitializeDpc(IN PKDPC Dpc, IN PKDEFERRED_ROUTINE DeferredRoutine, IN PVOID DeferredContext)
#define InsertTailList(ListHead, Entry)
#define KeReleaseSpinLock(sl, irql)
#define KeAcquireSpinLock(sl, irql)
#define InitializeListHead(ListHead)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
LARGE_INTEGER NTAPI KeQueryPerformanceCounter(IN PLARGE_INTEGER PerformanceFreq)
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)
#define KD_BREAKPOINT_MAX
BREAKPOINT_ENTRY KdpBreakpointTable[KD_BREAKPOINT_MAX]
NTSTATUS NTAPI KdDisableDebuggerWithLock(IN BOOLEAN NeedLock)
LARGE_INTEGER KdPerformanceCounterRate
BOOLEAN KdBreakAfterSymbolLoad
DBGKD_GET_VERSION64 KdVersionBlock
VOID NTAPI KdpTimeSlipWork(IN PVOID Context)
LARGE_INTEGER KdTimerStart
BOOLEAN KdIgnoreUmExceptions
PKDEBUG_ROUTINE KiDebugRoutine
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)
WORK_QUEUE_ITEM KdpTimeSlipWorkItem
KSPIN_LOCK KdpDataSpinLock
LIST_ENTRY KdpDebuggerDataListHead
BOOLEAN KdpDebuggerStructuresInitialized
VOID NTAPI KdpTimeSlipDpcRoutine(IN PKDPC Dpc, IN PVOID DeferredContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2)
BOOLEAN KdAutoEnableOnEvent
NTSTATUS NTAPI KdDebuggerInitialize0(IN PLOADER_PARAMETER_BLOCK LoaderBlock OPTIONAL)
BOOLEAN KdDebuggerNotPresent
BOOLEAN KdDebuggerEnabled
KDDEBUGGER_DATA64 * KdDebuggerDataBlock
static SIZE_T KdpGetMemorySizeInMBs(_In_opt_ PLOADER_PARAMETER_BLOCK LoaderBlock)
Retrieves the total size of the memory before Mm is initialized, by counting the number of physical p...
BOOLEAN NTAPI KdInitSystem(_In_ ULONG BootPhase, _In_opt_ PLOADER_PARAMETER_BLOCK LoaderBlock)
BOOLEAN NTAPI KdRegisterDebuggerDataBlock(IN ULONG Tag, IN PDBGKD_DEBUG_DATA_HEADER64 DataHeader, IN ULONG Size)
VOID NTAPI KdUpdateDataBlock(VOID)
static VOID KdpPrintBanner(VOID)
Displays the kernel debugger initialization banner.
BOOLEAN NTAPI KdPollBreakIn(VOID)
PLOADER_PARAMETER_BLOCK KeLoaderBlock
FORCEINLINE BOOLEAN MiIsMemoryTypeInvisible(TYPE_OF_MEMORY MemoryType)
static const char * ImageName
VOID NTAPI DbgLoadImageSymbols(_In_ PSTRING Name, _In_ PVOID Base, _In_ ULONG_PTR ProcessId)
NTSYSAPI VOID NTAPI RtlInitString(PSTRING DestinationString, PCSZ SourceString)
_In_ ULONG _In_ ULONG _In_ ULONG Length
PVOID KeUserCallbackDispatcher
PFN_COUNT MmNumberOfPhysicalPages
HANDLE NTAPI PsGetCurrentProcessId(VOID)
LIST_ENTRY PsLoadedModuleList
ULONG_PTR PsNtosImageBase
#define DBGKD_VERS_FLAG_MP
ULONG_PTR DirectoryTableBase
ULONG64 PsLoadedModuleList
ULONG64 KeUserCallbackDispatcher
DBGKD_DEBUG_DATA_HEADER64 Header
UNICODE_STRING FullDllName
struct _LIST_ENTRY * Flink
VOID NTAPI KeInitializeTimer(OUT PKTIMER Timer)
#define CONTAINING_RECORD(address, type, field)
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
_Must_inspect_result_ _In_ WDFCMRESLIST List
#define DbgKdMaximumStateChange
#define DbgKdMinimumStateChange
#define DbgKdMaximumManipulate
#define DbgKdMinimumManipulate
#define ExInitializeWorkItem(Item, Routine, Context)
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql