Refine and export kernel debugger printing
All checks were successful
Builds / ExectOS (amd64, release) (push) Successful in 26s
Builds / ExectOS (amd64, debug) (push) Successful in 29s
Builds / ExectOS (i686, debug) (push) Successful in 30s
Builds / ExectOS (i686, release) (push) Successful in 28s

This commit is contained in:
2025-09-14 01:25:56 +02:00
parent 79ec28641a
commit f321ca908b
12 changed files with 143 additions and 19 deletions

View File

@@ -24,29 +24,57 @@
*/
XTCDECL
VOID
KD::DebugIo::DbgPrint(PCWSTR Format, ...)
KD::DebugIo::DbgPrint(PCWSTR Format,
...)
{
VA_LIST Arguments;
PLIST_ENTRY DispatchTableEntry;
PKD_DISPATCH_TABLE DispatchTable;
/* Initialise the va_list */
VA_START(Arguments, Format);
DispatchTableEntry = Providers.Flink;
while(DispatchTableEntry != &Providers)
{
DispatchTable = CONTAIN_RECORD(DispatchTableEntry, KD_DISPATCH_TABLE, ListEntry);
RTL::WideString::FormatWideString(&DispatchTable->PrintContext, (PWCHAR)Format, Arguments);
DispatchTableEntry = DispatchTableEntry->Flink;
}
/* Call the actual debug print routine */
DbgPrintEx(Format, Arguments);
/* Clean up the va_list */
VA_END(Arguments);
}
/**
* Prints a formatted string using the configured debug output providers (va_list variant).
*
* @param Format
* Supplies the format string.
*
* @param ...
* Supplies the variable argument list.
*
* @return This routine does not return any value.
*
* @since XT 1.0
*/
XTCDECL
VOID
KD::DebugIo::DbgPrintEx(PCWSTR Format,
VA_LIST Arguments)
{
PLIST_ENTRY DispatchTableEntry;
PKD_DISPATCH_TABLE DispatchTable;
/* Iterate over all registered debug providers */
DispatchTableEntry = Providers.Flink;
while(DispatchTableEntry != &Providers)
{
/* Get dispatch table */
DispatchTable = CONTAIN_RECORD(DispatchTableEntry, KD_DISPATCH_TABLE, ListEntry);
/* Print formatted string using the provider's print context */
RTL::WideString::FormatWideString(&DispatchTable->PrintContext, (PWCHAR)Format, Arguments);
/* Move to the next provider */
DispatchTableEntry = DispatchTableEntry->Flink;
}
}
/**
* Detects and enables the kernel's debug ports based on the 'DEBUG' parameter passed to the kernel.
*