diff options
| author | Frans Kaashoek <kaashoek@mit.edu> | 2017-01-31 20:21:14 -0500 | 
|---|---|---|
| committer | Frans Kaashoek <kaashoek@mit.edu> | 2017-01-31 20:21:14 -0500 | 
| commit | fbb4c0944422f860484142010bb9f366f3e87bf8 (patch) | |
| tree | 5e339842d43d09a4d23f1a2165391f00af30e308 /vm.c | |
| parent | abf847a083888bbed4260ecacf849ea19f23e810 (diff) | |
| download | xv6-labs-fbb4c0944422f860484142010bb9f366f3e87bf8.tar.gz xv6-labs-fbb4c0944422f860484142010bb9f366f3e87bf8.tar.bz2 xv6-labs-fbb4c0944422f860484142010bb9f366f3e87bf8.zip | |
Read curproc from cpu structure, but be careful because after a schedule event
myproc() points to a different thread.
   myproc();
   sched();
   myproc();  // this proc maybe different than the one before sched
Thus, in a function that operates on one thread better to retrieve the
current process once at the start of the function.
Diffstat (limited to 'vm.c')
| -rw-r--r-- | vm.c | 4 | 
1 files changed, 1 insertions, 3 deletions
| @@ -27,13 +27,11 @@ seginit(void)    c->gdt[SEG_UCODE] = SEG(STA_X|STA_R, 0, 0xffffffff, DPL_USER);    c->gdt[SEG_UDATA] = SEG(STA_W, 0, 0xffffffff, DPL_USER);    c->cpu = c; +  c->proc = 0;    // Map cpu and proc -- these are private per cpu.    c->gdt[SEG_KCPU] = SEG(STA_W, &c->cpu, 4, 0);    lgdt(c->gdt, sizeof(c->gdt));    loadgs(SEG_KCPU << 3); -  // Initialize cpu-local storage. -  // setcpu(c); -  setproc(0);  }  // Return the address of the PTE in page table pgdir | 
