Author: aldeck Date: 2010-02-28 01:50:01 +0100 (Sun, 28 Feb 2010) New Revision: 35650 Changeset: http://dev.haiku-os.org/changeset/35650/haiku Modified: haiku/trunk/src/system/kernel/debug/debug.cpp Log: * 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. Modified: haiku/trunk/src/system/kernel/debug/debug.cpp =================================================================== --- haiku/trunk/src/system/kernel/debug/debug.cpp 2010-02-28 00:47:27 UTC (rev 35649) +++ haiku/trunk/src/system/kernel/debug/debug.cpp 2010-02-28 00:50:01 UTC (rev 35650) @@ -82,6 +82,7 @@ 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 @@ 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) { @@ -997,6 +1001,16 @@ 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) { if (argc > 2) { @@ -1209,6 +1223,9 @@ "[-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: