diff options
author | rsc <rsc> | 2007-08-20 19:37:15 +0000 |
---|---|---|
committer | rsc <rsc> | 2007-08-20 19:37:15 +0000 |
commit | e2a620da49f7e01fb93761e15ed9d40b3835400c (patch) | |
tree | 703f86fc7c0da571cfecb8acbb1dfb609f0faf70 /proc.c | |
parent | ef30c2c7499de88862560e0560d7de7860ffad1d (diff) | |
download | xv6-labs-e2a620da49f7e01fb93761e15ed9d40b3835400c.tar.gz xv6-labs-e2a620da49f7e01fb93761e15ed9d40b3835400c.tar.bz2 xv6-labs-e2a620da49f7e01fb93761e15ed9d40b3835400c.zip |
checkpoint - simpler namei interface
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"); } } |