From ab17e3198be3ae4bf50bf02241c5c1abb3128915 Mon Sep 17 00:00:00 2001
From: rsc <rsc>
Date: Thu, 7 Sep 2006 15:45:38 +0000
Subject: [PATCH] debugging prints

---
 console.c | 36 +++++++++++++++++++++++-------------
 defs.h    |  1 +
 proc.c    | 16 ++++++++++++++++
 3 files changed, 40 insertions(+), 13 deletions(-)

diff --git a/console.c b/console.c
index 218a627..52ccc10 100644
--- a/console.c
+++ b/console.c
@@ -356,19 +356,29 @@ kbd_intr()
       c += 'a' - 'A';
   }
 
-  // Ignore unknown keystrokes.
-  if(c == 0x0) {
-    release(&kbd_lock);
-    return;
-  }
-
-  if(((kbd_w + 1) % KBD_BUF) != kbd_r){
-    kbd_buf[kbd_w++] = c;
-    if(kbd_w >= KBD_BUF)
-      kbd_w = 0;
-    wakeup(&kbd_r);
-  } else {
-    cprintf("kbd overflow\n");
+  switch(c){
+  case 0:
+    // Ignore unknown keystrokes.
+    break;
+  
+  case C('T'):
+    cprintf("#");  // Let user know we're still alive.
+    break;
+  
+  case C('P'):
+    procdump();
+    break;
+
+  default:
+    if(((kbd_w + 1) % KBD_BUF) != kbd_r){
+      kbd_buf[kbd_w++] = c;
+      if(kbd_w >= KBD_BUF)
+        kbd_w = 0;
+      wakeup(&kbd_r);
+    } else {
+      cprintf("kbd overflow\n");
+    }
+    break;
   }
 
   release(&kbd_lock);
diff --git a/defs.h b/defs.h
index 0225e5d..a08690f 100644
--- a/defs.h
+++ b/defs.h
@@ -24,6 +24,7 @@ void proc_exit(void);
 int proc_kill(int);
 int proc_wait(void);
 void yield(void);
+void procdump(void);
 
 // swtch.S
 struct jmpbuf;
diff --git a/proc.c b/proc.c
index 3b7843f..37fd768 100644
--- a/proc.c
+++ b/proc.c
@@ -403,3 +403,19 @@ proc_wait(void)
   }
 }
 
+// Print a process listing to console.  For debugging.
+// Runs when user types ^P on console.
+// No lock to avoid wedging a stuck machine further.
+void
+procdump(void)
+{
+  int i;
+  struct proc *p;
+  
+  for(i = 0; i < NPROC; i++) {
+    p = &proc[i];
+    if(p->state == UNUSED)
+      continue;
+    cprintf("%d %d %p\n", p->pid, p->state);
+  }
+}
-- 
GitLab