diff options
Diffstat (limited to 'proc.c')
-rw-r--r-- | proc.c | 13 |
1 files changed, 9 insertions, 4 deletions
@@ -203,7 +203,6 @@ scheduler(void) void sched(void) { - if(cp->state == RUNNING) panic("sched running"); if(!holding(&proc_table_lock)) @@ -219,7 +218,6 @@ sched(void) void yield(void) { - acquire(&proc_table_lock); cp->state = RUNNABLE; sched(); @@ -422,9 +420,10 @@ procdump(void) [RUNNING] "run ", [ZOMBIE] "zombie" }; - int i; + int i, j; struct proc *p; char *state; + uint pc[10]; for(i = 0; i < NPROC; i++) { p = &proc[i]; @@ -434,7 +433,13 @@ procdump(void) state = states[p->state]; else state = "???"; - cprintf("%d %s %s\n", p->pid, state, p->name); + cprintf("%d %s %s", p->pid, state, p->name); + if(p->state == SLEEPING) { + getcallerpcs((uint*)p->jmpbuf.ebp+2, pc); + for(j=0; j<10 && pc[j] != 0; j++) + cprintf(" %p", pc[j]); + } + cprintf("\n"); } } |