From 4a6b20595a77a0d3e4e507563232a55ff74febf0 Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Fri, 9 Sep 2016 18:24:28 -0700 Subject: Add -p flag to pk to disable demand paging --- pk/mmap.c | 4 ++-- pk/mmap.h | 2 +- pk/pk.c | 4 ++++ 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/pk/mmap.c b/pk/mmap.c index db491d7..e00d18e 100644 --- a/pk/mmap.c +++ b/pk/mmap.c @@ -24,7 +24,7 @@ static uintptr_t first_free_page; static size_t next_free_page; static size_t free_pages; -int have_vm = 1; // unless -p flag is given +int demand_paging = 1; // unless -p flag is given static uintptr_t __page_alloc() { @@ -244,7 +244,7 @@ uintptr_t __do_mmap(uintptr_t addr, size_t length, int prot, int flags, file_t* *pte = (pte_t)v; } - if (!have_vm || (flags & MAP_POPULATE)) + if (!demand_paging || (flags & MAP_POPULATE)) for (uintptr_t a = addr; a < addr + length; a += RISCV_PGSIZE) kassert(__handle_page_fault(a, prot) == 0); diff --git a/pk/mmap.h b/pk/mmap.h index 3fc3186..f4f39f5 100644 --- a/pk/mmap.h +++ b/pk/mmap.h @@ -19,7 +19,7 @@ #define MAP_POPULATE 0x8000 #define MREMAP_FIXED 0x2 -extern int have_vm; +extern int demand_paging; uintptr_t pk_vm_init(); int handle_page_fault(uintptr_t vaddr, int prot); void populate_mapping(const void* start, size_t size, int prot); diff --git a/pk/pk.c b/pk/pk.c index 954bcb3..6a27b4e 100644 --- a/pk/pk.c +++ b/pk/pk.c @@ -16,6 +16,10 @@ static void handle_option(const char* s) current.cycle0 = 1; break; + case 'p': // disable demand paging + demand_paging = 0; + break; + default: panic("unrecognized option: `%c'", s[1]); break; -- cgit v1.1