modify each page in usertests countfree()
get rid of static for walk() and freewalk()
This commit is contained in:
parent
050a69610a
commit
8b9b799937
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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));
|
||||
|
|
Loading…
Reference in a new issue