diff options
author | rsc <rsc> | 2006-09-07 15:45:38 +0000 |
---|---|---|
committer | rsc <rsc> | 2006-09-07 15:45:38 +0000 |
commit | ab17e3198be3ae4bf50bf02241c5c1abb3128915 (patch) | |
tree | 6603025b78e908076ab4fc89a5e4167bcf8f94f2 | |
parent | 1542186378ba1c53744d19b3f2c8382976bd5d21 (diff) | |
download | xv6-labs-ab17e3198be3ae4bf50bf02241c5c1abb3128915.tar.gz xv6-labs-ab17e3198be3ae4bf50bf02241c5c1abb3128915.tar.bz2 xv6-labs-ab17e3198be3ae4bf50bf02241c5c1abb3128915.zip |
debugging prints
-rw-r--r-- | console.c | 36 | ||||
-rw-r--r-- | defs.h | 1 | ||||
-rw-r--r-- | proc.c | 16 |
3 files changed, 40 insertions, 13 deletions
@@ -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); @@ -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; @@ -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); + } +} |