13 #include <reactos/buildno.h> 35 SIZE_T NumberOfPhysicalPages = 0;
38 for (ListEntry = LoaderBlock->MemoryDescriptorListHead.
Flink;
39 ListEntry != &LoaderBlock->MemoryDescriptorListHead;
40 ListEntry = ListEntry->
Flink)
61 NumberOfPhysicalPages +=
Descriptor->PageCount;
74 DPRINT1(
"-----------------------------------------------------\n");
75 DPRINT1(
"ReactOS " KERNEL_VERSION_STR
" (Build " KERNEL_VERSION_BUILD_STR
") (Commit " KERNEL_VERSION_COMMIT_HASH
")\n");
119 NextEntry = NextEntry->
Flink;
122 if ((CurrentHeader == DataHeader) || (CurrentHeader->
OwnerTag ==
Tag))
131 DataHeader->OwnerTag =
Tag;
132 DataHeader->Size =
Size;
145 BOOLEAN EnableKd, DisableKdAfterInit =
FALSE, BlockEnable;
146 LPSTR CommandLine, DebugLine, DebugOptionStart, DebugOptionEnd;
153 CHAR NameBuffer[256];
156 #if defined(__GNUC__) 226 CommandLine = LoaderBlock->LoadOptions;
236 if (
strstr(CommandLine,
"CRASHDEBUG"))
241 else if (
strstr(CommandLine,
"NODEBUG"))
246 else if ((DebugLine =
strstr(CommandLine,
"DEBUG")) !=
NULL)
252 if (DebugLine[5] ==
'=')
255 DebugOptionStart = DebugOptionEnd = &DebugLine[6];
264 if ((*DebugOptionEnd ==
',') ||
265 (*DebugOptionEnd ==
' ') ||
266 (*DebugOptionEnd ==
'\t'))
282 DebugOptionLength = (DebugOptionEnd - DebugOptionStart);
288 if (!DebugOptionLength)
break;
291 if ((DebugOptionLength == 10) &&
292 !(
strncmp(DebugOptionStart,
"AUTOENABLE", 10)))
298 DisableKdAfterInit =
TRUE;
302 else if ((DebugOptionLength == 7) &&
303 !(
strncmp(DebugOptionStart,
"DISABLE", 7)))
306 DisableKdAfterInit =
TRUE;
310 else if ((DebugOptionLength == 6) &&
311 !(
strncmp(DebugOptionStart,
"NOUMEX", 6)))
321 if (*DebugOptionEnd !=
',')
329 DebugOptionStart = DebugOptionEnd;
396 KdpPrintBanner(MemSizeMBs);
399 if (DisableKdAfterInit)
416 NextEntry = LoaderBlock->LoadOrderListHead.
Flink;
418 while ((NextEntry != &LoaderBlock->LoadOrderListHead) && (
i < 2))
445 NextEntry = NextEntry->
Flink;
NTSTATUS NTAPI KdDebuggerInitialize0(IN PLOADER_PARAMETER_BLOCK LoaderBlock OPTIONAL)
BOOLEAN KdDebuggerEnabled
LARGE_INTEGER NTAPI KeQueryPerformanceCounter(IN PLARGE_INTEGER PerformanceFreq)
DBGKD_GET_VERSION64 KdVersionBlock
_In_ ULONG _In_ ULONG _In_ ULONG Length
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
BOOLEAN KdpDebuggerStructuresInitialized
#define DbgKdMaximumStateChange
PKDEBUG_ROUTINE KiDebugRoutine
BOOLEAN NTAPI KdRegisterDebuggerDataBlock(IN ULONG Tag, IN PDBGKD_DEBUG_DATA_HEADER64 DataHeader, IN ULONG Size)
char * strstr(char *String1, char *String2)
BOOLEAN KdAutoEnableOnEvent
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)
IN PVOID IN PVOID IN USHORT IN USHORT Size
#define InsertTailList(ListHead, Entry)
BOOLEAN NTAPI KdInitSystem(IN ULONG BootPhase, IN PLOADER_PARAMETER_BLOCK LoaderBlock)
PKDEBUG_SWITCH_ROUTINE KiDebugSwitchRoutine
BOOLEAN KdDebuggerNotPresent
LARGE_INTEGER KdTimerStart
#define DbgKdMaximumManipulate
PVOID KeUserCallbackDispatcher
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
ULONG_PTR DirectoryTableBase
LARGE_INTEGER KdPerformanceCounterRate
ULONG_PTR PsNtosImageBase
WORK_QUEUE_ITEM KdpTimeSlipWorkItem
VOID NTAPI KeInitializeTimer(OUT PKTIMER Timer)
KSPIN_LOCK KdpDataSpinLock
PLOADER_PARAMETER_BLOCK KeLoaderBlock
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
ULONG64 KeUserCallbackDispatcher
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
BOOLEAN KdIgnoreUmExceptions
struct _LIST_ENTRY * Flink
#define ExInitializeWorkItem(Item, Routine, Context)
NTSTATUS NTAPI KdDisableDebuggerWithLock(IN BOOLEAN NeedLock)
#define NT_SUCCESS(StatCode)
LIST_ENTRY PsLoadedModuleList
#define KeAcquireSpinLock(sl, irql)
int strncmp(const char *String1, const char *String2, ACPI_SIZE Count)
ULONG64 PsLoadedModuleList
#define DbgKdMinimumManipulate
KDDEBUGGER_DATA64 * KdDebuggerDataBlock
static const char * ImageName
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
_Must_inspect_result_ _In_ WDFCMRESLIST List
VOID NTAPI KdUpdateDataBlock(VOID)
#define KD_BREAKPOINT_MAX
BOOLEAN NTAPI KdPollBreakIn(VOID)
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
#define DbgKdMinimumStateChange
NTSYSAPI VOID NTAPI RtlInitString(PSTRING DestinationString, PCSZ SourceString)
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)
_CRTIMP char *__cdecl _strupr(_Inout_z_ char *_String)
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
LIST_ENTRY KdpDebuggerDataListHead
#define DBGKD_VERS_FLAG_MP
#define InitializeListHead(ListHead)
UNICODE_STRING FullDllName
BREAKPOINT_ENTRY KdpBreakpointTable[KD_BREAKPOINT_MAX]
HANDLE NTAPI PsGetCurrentProcessId(VOID)
BOOLEAN KdBreakAfterSymbolLoad
#define KeReleaseSpinLock(sl, irql)
VOID NTAPI KdpTimeSlipDpcRoutine(IN PKDPC Dpc, IN PVOID DeferredContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2)
VOID NTAPI KdpTimeSlipWork(IN PVOID Context)
VOID NTAPI DbgLoadImageSymbols(_In_ PSTRING Name, _In_ PVOID Base, _In_ ULONG_PTR ProcessId)
#define ALIGN_UP_BY(size, align)
BOOLEAN NTAPI KdpSwitchProcessor(IN PEXCEPTION_RECORD ExceptionRecord, IN OUT PCONTEXT ContextRecord, IN BOOLEAN SecondChanceException)
VOID NTAPI KeInitializeDpc(IN PKDPC Dpc, IN PKDEFERRED_ROUTINE DeferredRoutine, IN PVOID DeferredContext)
DBGKD_DEBUG_DATA_HEADER64 Header