From cd4e946773834d7ea4d708c80ea571c95979f420 Mon Sep 17 00:00:00 2001 From: Alexandre Deckner Date: Sun, 28 Feb 2010 00:50:01 +0000 Subject: [PATCH] * Add a serial_input command to the kernel debugger, allows using serial input even when on-screen kdebug is enabled. Usefull for remote debugging. Please review/adjust. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35650 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/debug/debug.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/system/kernel/debug/debug.cpp b/src/system/kernel/debug/debug.cpp index 43fb6b561c..ea9c462882 100644 --- a/src/system/kernel/debug/debug.cpp +++ b/src/system/kernel/debug/debug.cpp @@ -82,6 +82,7 @@ static bool sSyslogOutputEnabled = true; static bool sBlueScreenEnabled = false; // must always be false on startup static bool sDebugScreenEnabled = false; +static bool sSerialInputEnabled = false; static bool sBlueScreenOutput = true; static bool sEmergencyKeysEnabled = true; static spinlock sSpinlock = B_SPINLOCK_INITIALIZER; @@ -662,6 +663,9 @@ read_line(char* buffer, int32 maxLength, char kgetc(void) { + if (sSerialInputEnabled) + return arch_debug_serial_getchar(); + // give the kernel debugger modules a chance first for (uint32 i = 0; i < kMaxDebuggerModules; i++) { if (sDebuggerModules[i] && sDebuggerModules[i]->debugger_getchar) { @@ -996,6 +1000,16 @@ cmd_dump_syslog(int argc, char** argv) } +static int +cmd_serial_input(int argc, char** argv) +{ + sSerialInputEnabled = !sSerialInputEnabled; + kprintf("Serial input is turned %s now.\n", + sSerialInputEnabled ? "on" : "off"); + return 0; +} + + static int cmd_switch_cpu(int argc, char** argv) { @@ -1209,6 +1223,9 @@ syslog_init(struct kernel_args* args) "[-n]\nDumps the whole syslog buffer, or, if -n is specified, only " "the part that hasn't been sent yet.\n", 0); + add_debugger_command("serial_input", &cmd_serial_input, + "Enable or disable serial input"); + return B_OK; err2: