1 // test user-level fault handler -- alloc pages to fix faults
2 // doesn't work because we sys_cputs instead of cprintf (exercise: why?)
7 handler(struct UTrapframe
*utf
)
10 void *addr
= (void*)utf
->utf_fault_va
;
12 cprintf("fault %x\n", addr
);
13 if ((r
= sys_page_alloc(0, ROUNDDOWN(addr
, PGSIZE
),
14 PTE_P
|PTE_U
|PTE_W
)) < 0)
15 panic("allocating at %x in page fault handler: %e", addr
, r
);
16 snprintf((char*) addr
, 100, "this string was faulted in at %x", addr
);
20 umain(int argc
, char **argv
)
22 set_pgfault_handler(handler
);
23 sys_cputs((char*)0xDEADBEEF, 4);