modify each page in usertests countfree()

get rid of static for walk() and freewalk()
This commit is contained in:
Robert Morris 2020-08-07 05:32:48 -04:00 committed by Frans Kaashoek
parent 2ae9c8e272
commit 7f35d7a14e
4 changed files with 11 additions and 9 deletions

View file

@ -20,6 +20,7 @@ static void wakeup1(struct proc *chan);
extern char trampoline[]; // trampoline.S
// initialize the proc table at boot time.
void
procinit(void)
{
@ -145,8 +146,8 @@ freeproc(struct proc *p)
p->state = UNUSED;
}
// Create a page table for a given process,
// with no user pages, but with trampoline pages.
// Create a user page table for a given process,
// with no user memory, but with trampoline pages.
pagetable_t
proc_pagetable(struct proc *p)
{

View file

@ -97,7 +97,7 @@ struct proc {
// these are private to the process, so p->lock need not be held.
uint64 kstack; // Virtual address of kernel stack
uint64 sz; // Size of process memory (bytes)
pagetable_t pagetable; // Page table
pagetable_t pagetable; // User page table
struct trapframe *trapframe; // data page for trampoline.S
struct context context; // swtch() here to run process
struct file *ofile[NOFILE]; // Open files

View file

@ -16,9 +16,7 @@ extern char etext[]; // kernel.ld sets this to end of kernel code.
extern char trampoline[]; // trampoline.S
/*
* create a direct-map page table for the kernel and
* turn on paging. called early, in supervisor mode.
* the page allocator is already initialized.
* create a direct-map page table for the kernel.
*/
void
kvminit()
@ -70,7 +68,7 @@ kvminithart()
// 21..39 -- 9 bits of level-1 index.
// 12..20 -- 9 bits of level-0 index.
// 0..12 -- 12 bits of byte offset within the page.
static pte_t *
pte_t *
walk(pagetable_t pagetable, uint64 va, int alloc)
{
if(va >= MAXVA)
@ -278,7 +276,7 @@ uvmdealloc(pagetable_t pagetable, uint64 oldsz, uint64 newsz)
// Recursively free page-table pages.
// All leaf mappings must already have been removed.
static void
void
freewalk(pagetable_t pagetable)
{
// there are 2^9 = 512 PTEs in a page table.

View file

@ -2251,9 +2251,12 @@ countfree()
int n = 0;
while(1){
if((uint64)sbrk(4096) == 0xffffffffffffffff){
uint64 a = (uint64) sbrk(4096);
if(a == 0xffffffffffffffff){
break;
}
// modify the memory to make sure it's really allocated.
*(char *)(a - 1) = 1;
n += 1;
}
sbrk(-((uint64)sbrk(0) - sz0));