1#include <pager/pager.h> 2#include <stdio.h> 3 4int main(int argc, char *argv[]) 5{ 6 errval_t err; 7 err = pager_install_handler(NULL, 0); 8 if (err_is_fail(err)) { 9 DEBUG_ERR(err, "pager_install_handler"); 10 } 11 12 // region size 13 size_t size = 16384u; 14 // create dummy memobj 15 struct memobj_one_frame *m = malloc(sizeof(struct memobj_one_frame)); 16 assert(m); 17 err = memobj_create_one_frame(m, size, 0); 18 // figure out address 19 genvaddr_t address; 20 struct pmap *pmap = get_current_pmap(); 21 err = pmap->f.determine_addr(pmap, &m->m, 4096u, &address); 22 if (err_is_fail(err)) { 23 return err_push(err, LIB_ERR_PMAP_DETERMINE_ADDR); 24 } 25 26 printf("non-mapped region @0x%"PRIxGENVADDR"\n", address); 27 28 char *buf = (char*)vspace_genvaddr_to_lvaddr(address); 29 30 printf("writing to not-yet-mapped region\n"); 31 for (int i = 0; i < size; i++) { 32 buf[i] = i % 0xff; 33 } 34 printf("checking region\n"); 35 for (int i = 0; i < size; i++) { 36 assert(buf[i] == i % 0xff); 37 } 38 39 printf("pagertest completed successfully!\n"); 40 41 return 0; 42} 43