summaryrefslogtreecommitdiff
path: root/proc.c
diff options
context:
space:
mode:
Diffstat (limited to 'proc.c')
-rw-r--r--proc.c13
1 files changed, 9 insertions, 4 deletions
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");
}
}