提交 ab17e319 创建 作者: rsc's avatar rsc

debugging prints

上级 15421863
......@@ -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);
}
}
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论