diff options
author | Robert Morris <[email protected]> | 2022-08-09 15:11:25 -0400 |
---|---|---|
committer | Robert Morris <[email protected]> | 2022-08-09 15:11:25 -0400 |
commit | 7d8bfdcbe306f7f407a816a4f032cf1780d8c215 (patch) | |
tree | ba74c9376ee2537acb3d328a9df4ab94f04617a7 /kernel/proc.c | |
parent | dd431c400a78e3bd79cd1a51e117fc8f4d91d948 (diff) | |
download | xv6-labs-7d8bfdcbe306f7f407a816a4f032cf1780d8c215.tar.gz xv6-labs-7d8bfdcbe306f7f407a816a4f032cf1780d8c215.tar.bz2 xv6-labs-7d8bfdcbe306f7f407a816a4f032cf1780d8c215.zip |
nothing much
Diffstat (limited to 'kernel/proc.c')
-rw-r--r-- | kernel/proc.c | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/kernel/proc.c b/kernel/proc.c index 22e7ce4..2d0ffa1 100644 --- a/kernel/proc.c +++ b/kernel/proc.c @@ -30,7 +30,8 @@ struct spinlock wait_lock; // Map it high in memory, followed by an invalid // guard page. void -proc_mapstacks(pagetable_t kpgtbl) { +proc_mapstacks(pagetable_t kpgtbl) +{ struct proc *p; for(p = proc; p < &proc[NPROC]; p++) { @@ -42,7 +43,7 @@ proc_mapstacks(pagetable_t kpgtbl) { } } -// initialize the proc table at boot time. +// initialize the proc table. void procinit(void) { @@ -69,7 +70,8 @@ cpuid() // Return this CPU's cpu struct. // Interrupts must be disabled. struct cpu* -mycpu(void) { +mycpu(void) +{ int id = cpuid(); struct cpu *c = &cpus[id]; return c; @@ -77,7 +79,8 @@ mycpu(void) { // Return the current struct proc *, or zero if none. struct proc* -myproc(void) { +myproc(void) +{ push_off(); struct cpu *c = mycpu(); struct proc *p = c->proc; @@ -86,7 +89,8 @@ myproc(void) { } int -allocpid() { +allocpid() +{ int pid; acquire(&pid_lock); @@ -210,7 +214,8 @@ proc_freepagetable(pagetable_t pagetable, uint64 sz) } // a user program that calls exec("/init") -// od -t xC initcode +// assembled from ../user/initcode.S +// od -t xC ../user/initcode uchar initcode[] = { 0x17, 0x05, 0x00, 0x00, 0x13, 0x05, 0x45, 0x02, 0x97, 0x05, 0x00, 0x00, 0x93, 0x85, 0x35, 0x02, @@ -230,9 +235,9 @@ userinit(void) p = allocproc(); initproc = p; - // allocate one user page and copy init's instructions + // allocate one user page and copy initcode's instructions // and data into it. - uvminit(p->pagetable, initcode, sizeof(initcode)); + uvmfirst(p->pagetable, initcode, sizeof(initcode)); p->sz = PGSIZE; // prepare for the very first "return" from kernel to user. |