13#include <reactos/buildno.h>
17#include "../kdbg/kdb.h"
28#define KdpBufferSize (1024 * 512)
42#define KdpScreenLineLengthDefault 80
215 else if (BootPhase == 1)
238 else if (BootPhase >= 2)
303 DPRINT(
"Status: 0x%08lx - EOF offset: %I64d\n",
311 DPRINT(
"Status: 0x%08lx - Position: %I64d\n",
320 DPRINT(
"ZwSetInformationFile(FilePositionInfo) returned: 0x%08lx\n",
Status);
336 DPRINT1(
"Failed to create log file thread: 0x%08lx\n",
Status);
342 ZwSetInformationThread(ThreadHandle,
419 else if (BootPhase == 1)
531 else if (BootPhase == 1)
557 CurrentEntry = CurrentEntry->
Flink)
652 CHAR MessageBuffer[512];
673 ResponseString.Buffer = MessageBuffer;
674 ResponseString.Length = 0;
675 ResponseString.MaximumLength =
min(
sizeof(MessageBuffer),
676 MessageData->MaximumLength);
677 ResponseString.MaximumLength =
min(ResponseString.MaximumLength,
696 ResponseString.Length =
698 ResponseString.MaximumLength);
ACPI_SIZE strlen(const char *String)
#define FILE_NON_DIRECTORY_FILE
_In_ ULONG _In_opt_ WDFREQUEST _In_opt_ PVOID _In_ size_t _In_ PVOID _In_ size_t _Out_ size_t * DataLength
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
#define NT_SUCCESS(StatCode)
#define FILE_ATTRIBUTE_NORMAL
#define RemoveEntryList(Entry)
#define InsertTailList(ListHead, Entry)
#define KeRaiseIrql(irql, oldIrql)
#define KeWaitForSingleObject(pEvt, foo, a, b, c)
#define KeInitializeEvent(pEvt, foo, foo2)
#define KeLowerIrql(oldIrql)
#define KeSetEvent(pEvt, foo, foo2)
#define KeInitializeSpinLock(sl)
#define ExGetPreviousMode
#define InterlockedExchangeAddUL(Addend, Value)
struct _FileName FileName
@ FilePositionInformation
#define FILE_SYNCHRONOUS_IO_NONALERT
#define FILE_WRITE_THROUGH
#define FILE_SEQUENTIAL_ONLY
NTHALAPI VOID NTAPI HalDisplayString(PUCHAR String)
VOID NTAPI InbvAcquireDisplayOwnership(VOID)
VOID NTAPI InbvInstallDisplayStringFilter(_In_ INBV_DISPLAY_STRING_FILTER DisplayFilter)
VOID NTAPI InbvNotifyDisplayOwnershipLost(_In_ INBV_RESET_DISPLAY_PARAMETERS Callback)
BOOLEAN NTAPI InbvCheckDisplayOwnership(VOID)
VOID NTAPI InbvSetTextColor(_In_ ULONG Color)
BOOLEAN NTAPI InbvEnableDisplayString(_In_ BOOLEAN Enable)
BOOLEAN NTAPI InbvResetDisplay(VOID)
VOID NTAPI InbvSetScrollRegion(_In_ ULONG Left, _In_ ULONG Top, _In_ ULONG Right, _In_ ULONG Bottom)
VOID NTAPI InbvSolidColorFill(_In_ ULONG Left, _In_ ULONG Top, _In_ ULONG Right, _In_ ULONG Bottom, _In_ ULONG Color)
BOOLEAN NTAPI InbvIsBootDriverInstalled(VOID)
BOOLEAN NTAPI KdPortInitializeEx(PCPPORT PortInformation, ULONG ComPortNumber)
VOID NTAPI KdPortPutByteEx(PCPPORT PortInformation, UCHAR ByteToSend)
#define OBJ_KERNEL_HANDLE
#define OBJ_CASE_INSENSITIVE
SIZE_T KdIoReadLine(_Out_ PCHAR Buffer, _In_ SIZE_T Size)
Reads a line of user input from the terminal.
NTSTATUS(NTAPI * PKDP_INIT_ROUTINE)(_In_ struct _KD_DISPATCH_TABLE *DispatchTable, _In_ ULONG BootPhase)
const CSTRING KdbPromptStr
#define DEFAULT_DEBUG_PORT
#define DEFAULT_DEBUG_BAUD_RATE
static VOID NTAPI KdpLoggerThread(PVOID Context)
static volatile ULONG KdpFreeBytes
VOID __cdecl KdIoPrintf(_In_ PCSTR Format,...)
NTSTATUS NTAPI KdpSerialInit(_In_ PKD_DISPATCH_TABLE DispatchTable, _In_ ULONG BootPhase)
static HANDLE KdpLogFileHandle
VOID NTAPI KdbpReleaseLock(_In_ PKSPIN_LOCK SpinLock, _In_ KIRQL OldIrql)
static ULONG KdpScreenLineBufferPos
VOID NTAPI KdSendPacket(_In_ ULONG PacketType, _In_ PSTRING MessageHeader, _In_opt_ PSTRING MessageData, _Inout_ PKD_CONTEXT Context)
KDP_DEBUG_MODE KdpDebugMode
KDSTATUS NTAPI KdReceivePacket(_In_ ULONG PacketType, _Out_ PSTRING MessageHeader, _Out_ PSTRING MessageData, _Out_ PULONG DataLength, _Inout_ PKD_CONTEXT Context)
VOID KdpScreenRelease(VOID)
KIRQL NTAPI KdbpAcquireLock(_In_ PKSPIN_LOCK SpinLock)
static PCHAR KdpDebugBuffer
static CHAR KdpScreenLineBuffer[KdpScreenLineLengthDefault+1]
static VOID KdIoPrintString(_In_ PCCH String, _In_ ULONG Length)
PKDP_INIT_ROUTINE InitRoutines[KdMax]
static KSPIN_LOCK KdpSerialSpinLock
NTSTATUS NTAPI KdpScreenInit(_In_ PKD_DISPATCH_TABLE DispatchTable, _In_ ULONG BootPhase)
NTSTATUS NTAPI KdpDebugLogInit(_In_ PKD_DISPATCH_TABLE DispatchTable, _In_ ULONG BootPhase)
static KSPIN_LOCK KdpDebugLogSpinLock
static KEVENT KdpLoggerThreadEvent
static ULONG KdpScreenLineLength
VOID KdpScreenAcquire(VOID)
ANSI_STRING KdpLogFileName
static BOOLEAN KdpLoggingEnabled
static VOID NTAPI KdpScreenPrint(_In_ PCCH String, _In_ ULONG Length)
VOID KdIoPuts(_In_ PCSTR String)
static VOID NTAPI KdpPrintToLogFile(_In_ PCCH String, _In_ ULONG Length)
static volatile ULONG KdpCurrentPosition
static VOID NTAPI KdpSerialPrint(_In_ PCCH String, _In_ ULONG Length)
#define KdpScreenLineLengthDefault
VOID KbdDisableMouse(VOID)
VOID KbdEnableMouse(VOID)
#define ExFreePoolWithTag(_P, _T)
FORCEINLINE PVOID ExAllocatePoolZero(ULONG PoolType, SIZE_T NumberOfBytes, ULONG Tag)
#define InitializeObjectAttributes(p, n, a, r, s)
NTSYSAPI NTSTATUS NTAPI ZwClose(_In_ HANDLE Handle)
#define THREAD_ALL_ACCESS
NTSYSAPI NTSTATUS NTAPI NtWriteFile(IN HANDLE hFile, IN HANDLE hEvent OPTIONAL, IN PIO_APC_ROUTINE IoApcRoutine OPTIONAL, IN PVOID IoApcContext OPTIONAL, OUT PIO_STATUS_BLOCK pIoStatusBlock, IN PVOID WriteBuffer, IN ULONG WriteBufferLength, IN PLARGE_INTEGER FileOffset OPTIONAL, IN PULONG LockOperationKey OPTIONAL)
NTSYSAPI NTSTATUS NTAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING DestinationString, PANSI_STRING SourceString, BOOLEAN AllocateDestinationString)
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
_In_ ULONG _In_ ULONG _In_ ULONG Length
BOOLEAN FASTCALL KeTestSpinLock(IN PKSPIN_LOCK SpinLock)
BOOLEAN FASTCALL KeTryToAcquireSpinLockAtDpcLevel(IN OUT PKSPIN_LOCK SpinLock)
VOID FASTCALL KiReleaseSpinLock(IN PKSPIN_LOCK SpinLock)
NTSTATUS NTAPI PsCreateSystemThread(OUT PHANDLE ThreadHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, IN HANDLE ProcessHandle, IN PCLIENT_ID ClientId, IN PKSTART_ROUTINE StartRoutine, IN PVOID StartContext)
#define STATUS_PORT_DISCONNECTED
#define STATUS_DEVICE_DOES_NOT_EXIST
#define KdPacketNeedsResend
#define FileStandardInformation
DBGKD_GET_STRING GetString
union _DBGKD_DEBUG_IO::@3549 u
PKDP_PRINT_ROUTINE KdpPrintRoutine
struct _LIST_ENTRY * Flink
#define RTL_CONSTANT_STRING(s)
#define RtlCopyMemory(Destination, Source, Length)
#define CONTAINING_RECORD(address, type, field)
#define STATUS_OBJECT_PATH_NOT_FOUND
#define STATUS_OBJECT_NAME_NOT_FOUND
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFSTRING String
_In_ WDFINTERRUPT _In_ WDF_INTERRUPT_POLICY _In_ WDF_INTERRUPT_PRIORITY Priority
_In_ PWDFDEVICE_INIT _In_ PWDF_PDO_EVENT_CALLBACKS DispatchTable
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFSPINLOCK * SpinLock
#define DbgKdPrintStringApi
#define DbgKdGetStringApi
struct _DBGKD_DEBUG_IO * PDBGKD_DEBUG_IO
#define PACKET_TYPE_KD_DEBUG_IO
void int int ULONGLONG int va_list * ap
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql