commit ab17e3198be3ae4bf50bf02241c5c1abb3128915
parent 1542186378ba1c53744d19b3f2c8382976bd5d21
Author: rsc <rsc>
Date: Thu, 7 Sep 2006 15:45:38 +0000
debugging prints
Diffstat:
3 files changed, 40 insertions(+), 13 deletions(-)
diff --git 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
@@ -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
@@ -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);
+ }
+}