[haiku-commits] r35650 - haiku/trunk/src/system/kernel/debug

  • From: alex@xxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sun, 28 Feb 2010 01:50:01 +0100 (CET)

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:


Other related posts: