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); +  } +} | 
