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 | |
| parent | 7a37578e9efcba67d82fbfee7d03cba830a41106 (diff) | |
| download | xv6-labs-18432ed5edaeb2a6ffd91f557880c277d96784c1.tar.gz xv6-labs-18432ed5edaeb2a6ffd91f557880c277d96784c1.tar.bz2 xv6-labs-18432ed5edaeb2a6ffd91f557880c277d96784c1.zip | |
nits
| -rw-r--r-- | Notes | 4 | ||||
| -rw-r--r-- | proc.c | 14 | ||||
| -rw-r--r-- | proc.h | 7 | 
3 files changed, 10 insertions, 15 deletions
| @@ -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 | 
