页面表条目如何分配到xv6中的未使用状态

时间:2019-05-22 11:23:25

标签: linux xv6 page-tables

我想为一个堆栈分配一个表页面和物理内存,而仅为三个堆栈分配页面表条目。 我该怎么办?

我附加了分配功能。

引用:https://github.com/fernandabonetti/xv6/blob/master/vm.c

  int
     allocuvm(pde_t *pgdir, uint oldsz, uint newsz)
    {
      char *mem;
      uint a;

      if(newsz >= KERNBASE)
        return 0;
      if(newsz < oldsz)
        return oldsz;


       a = PGROUNDUP(oldsz);
       for(; a < newsz; a += PGSIZE){
        mem = kalloc();
        if(mem == 0){
      cprintf("allocuvm out of memory\n");
          deallocuvm(pgdir, newsz, oldsz);
      return 0;
    }
    memset(mem, 0, PGSIZE);
    if(mappages(pgdir, (char*)a, PGSIZE, V2P(mem), PTE_W|PTE_U) < 0){
      cprintf("allocuvm out of memory (2)\n");
      deallocuvm(pgdir, newsz, oldsz);
      kfree(mem);
      return 0;
    }
  }
  return newsz;
}

0 个答案:

没有答案