Skip to content
Snippets Groups Projects
Commit 18432ed5 authored by rtm's avatar rtm
Browse files

nits

parent 7a37578e
No related branches found
No related tags found
No related merge requests found
......@@ -101,7 +101,6 @@ test: one process unlinks a file while another links to it
test: one process opens a file while another deletes it
test: deadlock d/.. vs ../d, two processes.
test: dup() shared fd->off
test: sbrk
test: does echo foo > x truncate x?
sh: support pipes? leave it for the class?
......@@ -119,4 +118,5 @@ echo foo > bar should truncate bar
but O_TRUNC should
make it work on one cpu
make it work on amsterdam
make it work on a real machine
release before acquire at end of sleep?
......@@ -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];
......
......@@ -36,9 +36,9 @@ struct jmpbuf {
enum proc_state { UNUSED, EMBRYO, SLEEPING, RUNNABLE, RUNNING, ZOMBIE };
struct proc{
char *mem; // start of process's physical memory
uint sz; // total size of mem, including kernel stack
char *kstack; // kernel stack, separate from mem so it doesn't move
char *mem; // start of process's memory (a kernel address)
uint sz; // user memory size
char *kstack; // kernel stack
enum proc_state state;
int pid;
int ppid;
......@@ -52,7 +52,6 @@ struct proc{
extern struct proc proc[];
extern struct proc *curproc[NCPU]; // can be NULL if no proc running.
// XXX move curproc into cpu structure?
#define MPSTACK 512
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment