nothing much
This commit is contained in:
		
							parent
							
								
									dd431c400a
								
							
						
					
					
						commit
						7d8bfdcbe3
					
				
					 5 changed files with 21 additions and 15 deletions
				
			
		| 
						 | 
				
			
			@ -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);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue