From e2a620da49f7e01fb93761e15ed9d40b3835400c Mon Sep 17 00:00:00 2001 From: rsc Date: Mon, 20 Aug 2007 19:37:15 +0000 Subject: checkpoint - simpler namei interface --- proc.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'proc.c') diff --git a/proc.c b/proc.c index 074dc17..b09b738 100644 --- a/proc.c +++ b/proc.c @@ -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"); } } -- cgit v1.2.3