diff options
author | rtm <rtm> | 2006-08-29 21:35:30 +0000 |
---|---|---|
committer | rtm <rtm> | 2006-08-29 21:35:30 +0000 |
commit | 18432ed5edaeb2a6ffd91f557880c277d96784c1 (patch) | |
tree | 92c408330eaf6f4d9febb70270894a5c6caa6db0 /proc.c | |
parent | 7a37578e9efcba67d82fbfee7d03cba830a41106 (diff) | |
download | xv6-labs-18432ed5edaeb2a6ffd91f557880c277d96784c1.tar.gz xv6-labs-18432ed5edaeb2a6ffd91f557880c277d96784c1.tar.bz2 xv6-labs-18432ed5edaeb2a6ffd91f557880c277d96784c1.zip |
nits
Diffstat (limited to 'proc.c')
-rw-r--r-- | proc.c | 14 |
1 files changed, 5 insertions, 9 deletions
@@ -38,8 +38,6 @@ setupsegs(struct proc *p) c->ts.esp0 = 0xffffffff; } - // XXX it may be wrong to modify the current segment table! - c->gdt[0] = SEG_NULL; c->gdt[SEG_KCODE] = SEG(STA_X|STA_R, 0, 0x100000 + 64*1024, 0); // xxx c->gdt[SEG_KDATA] = SEG(STA_W, 0, 0xffffffff, 0); @@ -96,7 +94,7 @@ copyproc(struct proc* p) np->ppid = p->pid; release(&proc_table_lock); - // Copy process image memory. + // Copy user memory. np->sz = p->sz; np->mem = kalloc(np->sz); if(np->mem == 0){ @@ -214,18 +212,16 @@ sched(void) void yield(void) { - struct proc *p; + struct proc *p = curproc[cpu()]; - if((p=curproc[cpu()]) == 0 || curproc[cpu()]->state != RUNNING) - panic("yield"); acquire(&proc_table_lock); p->state = RUNNABLE; sched(); release(&proc_table_lock); } -// A process's very first scheduling by scheduler() -// will longjmp here to do the first jump into user space. +// A fork child's very first scheduling by scheduler() +// will longjmp here. "return" to user space. void forkret(void) { @@ -371,7 +367,7 @@ proc_wait(void) acquire(&proc_table_lock); for(;;){ - // Scan through table looking zombie children. + // Scan through table looking for zombie children. havekids = 0; for(i = 0; i < NPROC; i++){ p = &proc[i]; |