X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=reactos%2Fntoskrnl%2Fkdbg%2Fkdb.c;h=91660cfaf020a6a62e6e1e87aa831533aa2424e8;hp=67037f6829de455df796259f1fe87b7851f419aa;hb=1c4d9ec3f17e6a285b27d4965e2cd17d6b5f80a2;hpb=6ba68445bf4c455d493fa05b93255a0e41c74016 diff --git a/reactos/ntoskrnl/kdbg/kdb.c b/reactos/ntoskrnl/kdbg/kdb.c index 67037f6829d..91660cfaf02 100644 --- a/reactos/ntoskrnl/kdbg/kdb.c +++ b/reactos/ntoskrnl/kdbg/kdb.c @@ -127,12 +127,6 @@ KiEspToTrapFrame( IN PKTRAP_FRAME TrapFrame, IN ULONG Esp); -/* ROS Internal. Please deprecate */ -NTHALAPI -VOID -NTAPI -HalReleaseDisplayOwnership(); - /* FUNCTIONS *****************************************************************/ static VOID @@ -1247,9 +1241,21 @@ KdbpInternalEnter() ULONG SavedStackLimit; KbdDisableMouse(); - if (KdpDebugMode.Screen) + + if (KdpDebugMode.Screen && + InbvIsBootDriverInstalled() && + !InbvCheckDisplayOwnership()) { + /* Acquire ownership and reset the display */ InbvAcquireDisplayOwnership(); + InbvResetDisplay(); + + /* Display debugger prompt */ + InbvSolidColorFill(0, 0, 639, 479, 0); + InbvSetTextColor(15); + InbvInstallDisplayStringFilter(NULL); + InbvEnableDisplayString(TRUE); + InbvSetScrollRegion(0, 0, 639, 479); } /* Call the interface's main loop on a different stack */ @@ -1466,12 +1472,12 @@ KdbEnterDebuggerException( if (BreakPoint->Type == KdbBreakPointSoftware) { - KdbpPrint("Entered debugger on breakpoint #%d: EXEC 0x%04x:0x%08x\n", + KdbpPrint("\nEntered debugger on breakpoint #%d: EXEC 0x%04x:0x%08x\n", KdbLastBreakPointNr, TrapFrame->SegCs & 0xffff, TrapFrame->Eip); } else if (BreakPoint->Type == KdbBreakPointHardware) { - KdbpPrint("Entered debugger on breakpoint #%d: %s 0x%08x\n", + KdbpPrint("\nEntered debugger on breakpoint #%d: %s 0x%08x\n", KdbLastBreakPointNr, (BreakPoint->Data.Hw.AccessType == KdbAccessRead) ? "READ" : ((BreakPoint->Data.Hw.AccessType == KdbAccessWrite) ? "WRITE" : @@ -1539,7 +1545,7 @@ KdbEnterDebuggerException( return kdHandleException; } - KdbpPrint("Entered debugger on unexpected debug trap!\n"); + KdbpPrint("\nEntered debugger on unexpected debug trap!\n"); } } else if (ExceptionCode == STATUS_BREAKPOINT) @@ -1554,7 +1560,7 @@ KdbEnterDebuggerException( return kdHandleException; } - KdbpPrint("Entered debugger on embedded INT3 at 0x%04x:0x%08x.\n", + KdbpPrint("\nEntered debugger on embedded INT3 at 0x%04x:0x%08x.\n", TrapFrame->SegCs & 0xffff, TrapFrame->Eip - 1); } else @@ -1568,7 +1574,7 @@ KdbEnterDebuggerException( return ContinueType; } - KdbpPrint("Entered debugger on %s-chance exception (Exception Code: 0x%x) (%s)\n", + KdbpPrint("\nEntered debugger on %s-chance exception (Exception Code: 0x%x) (%s)\n", FirstChance ? "first" : "last", ExceptionCode, ExceptionString); if (ExceptionCode == STATUS_ACCESS_VIOLATION && @@ -1656,7 +1662,7 @@ KdbEnterDebuggerException( /* Decrement the entry count */ InterlockedDecrement(&KdbEntryCount); - /* HACK: Raise back to old IRWL */ + /* HACK: Raise back to old IRQL */ KeRaiseIrql(OldIrql, &OldIrql); /* Leave critical section */ @@ -1699,30 +1705,29 @@ INIT_FUNCTION KdbpGetCommandLineSettings( PCHAR p1) { - PCHAR p2; +#define CONST_STR_LEN(x) (sizeof(x)/sizeof(x[0]) - 1) - while (p1 && (p2 = strchr(p1, ' '))) + while (p1 && (p1 = strchr(p1, ' '))) { - p2 += 2; + /* Skip other spaces */ + while (*p1 == ' ') ++p1; - if (!_strnicmp(p2, "KDSERIAL", 8)) + if (!_strnicmp(p1, "KDSERIAL", CONST_STR_LEN("KDSERIAL"))) { - p2 += 8; + p1 += CONST_STR_LEN("KDSERIAL"); KdbDebugState |= KD_DEBUG_KDSERIAL; KdpDebugMode.Serial = TRUE; } - else if (!_strnicmp(p2, "KDNOECHO", 8)) + else if (!_strnicmp(p1, "KDNOECHO", CONST_STR_LEN("KDNOECHO"))) { - p2 += 8; + p1 += CONST_STR_LEN("KDNOECHO"); KdbDebugState |= KD_DEBUG_KDNOECHO; } - else if (!_strnicmp(p2, "FIRSTCHANCE", 11)) + else if (!_strnicmp(p1, "FIRSTCHANCE", CONST_STR_LEN("FIRSTCHANCE"))) { - p2 += 11; + p1 += CONST_STR_LEN("FIRSTCHANCE"); KdbpSetEnterCondition(-1, TRUE, KdbEnterAlways); } - - p1 = p2; } }