summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'kernel')
-rw-r--r--kernel/defs.h2
-rw-r--r--kernel/fs.c4
-rw-r--r--kernel/plic.c3
-rw-r--r--kernel/proc.c21
-rw-r--r--kernel/vm.c6
5 files changed, 21 insertions, 15 deletions
diff --git a/kernel/defs.h b/kernel/defs.h
index 3564db4..049569e 100644
--- a/kernel/defs.h
+++ b/kernel/defs.h
@@ -159,7 +159,7 @@ void kvminithart(void);
void kvmmap(pagetable_t, uint64, uint64, uint64, int);
int mappages(pagetable_t, uint64, uint64, uint64, int);
pagetable_t uvmcreate(void);
-void uvminit(pagetable_t, uchar *, uint);
+void uvmfirst(pagetable_t, uchar *, uint);
uint64 uvmalloc(pagetable_t, uint64, uint64);
uint64 uvmdealloc(pagetable_t, uint64, uint64);
int uvmcopy(pagetable_t, pagetable_t, uint64);
diff --git a/kernel/fs.c b/kernel/fs.c
index 40c9bd4..53a3a0f 100644
--- a/kernel/fs.c
+++ b/kernel/fs.c
@@ -109,8 +109,8 @@ bfree(int dev, uint b)
// its size, the number of links referring to it, and the
// list of blocks holding the file's content.
//
-// The inodes are laid out sequentially on disk at
-// sb.startinode. Each inode has a number, indicating its
+// The inodes are laid out sequentially on disk at block
+// sb.inodestart. Each inode has a number, indicating its
// position on the disk.
//
// The kernel keeps a table of in-use inodes in memory
diff --git a/kernel/plic.c b/kernel/plic.c
index 5acba39..d4fd122 100644
--- a/kernel/plic.c
+++ b/kernel/plic.c
@@ -21,7 +21,8 @@ plicinithart(void)
{
int hart = cpuid();
- // set uart's enable bit for this hart's S-mode.
+ // set enable bits for this hart's S-mode
+ // for the uart and virtio disk.
*(uint32*)PLIC_SENABLE(hart)= (1 << UART0_IRQ) | (1 << VIRTIO0_IRQ);
// set this hart's S-mode priority threshold to 0.
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.
diff --git a/kernel/vm.c b/kernel/vm.c
index d5a12a0..3c6f295 100644
--- a/kernel/vm.c
+++ b/kernel/vm.c
@@ -43,7 +43,7 @@ kvmmake(void)
// the highest virtual address in the kernel.
kvmmap(kpgtbl, TRAMPOLINE, (uint64)trampoline, PGSIZE, PTE_R | PTE_X);
- // map kernel stacks
+ // allocate and map a kernel stack for each process.
proc_mapstacks(kpgtbl);
return kpgtbl;
@@ -203,12 +203,12 @@ uvmcreate()
// for the very first process.
// sz must be less than a page.
void
-uvminit(pagetable_t pagetable, uchar *src, uint sz)
+uvmfirst(pagetable_t pagetable, uchar *src, uint sz)
{
char *mem;
if(sz >= PGSIZE)
- panic("inituvm: more than a page");
+ panic("uvmfirst: more than a page");
mem = kalloc();
memset(mem, 0, PGSIZE);
mappages(pagetable, 0, PGSIZE, (uint64)mem, PTE_W|PTE_R|PTE_X|PTE_U);