summaryrefslogtreecommitdiff
path: root/proc.c
diff options
context:
space:
mode:
authorrsc <rsc>2007-08-20 19:37:15 +0000
committerrsc <rsc>2007-08-20 19:37:15 +0000
commite2a620da49f7e01fb93761e15ed9d40b3835400c (patch)
tree703f86fc7c0da571cfecb8acbb1dfb609f0faf70 /proc.c
parentef30c2c7499de88862560e0560d7de7860ffad1d (diff)
downloadxv6-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.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");
}
}