Added test for paging_unmap
This commit is contained in:
parent
24b4c54978
commit
ba1eaa12dc
@ -136,13 +136,43 @@ static errval_t test_paging_map_frame(struct paging_state *paging_state) {
|
||||
if(*((uint8_t *)retaddr + (rand() % mapping_size)) != val) {
|
||||
return ERR_INVALID_ARGS;
|
||||
}
|
||||
|
||||
vaddr += LARGE_PAGE_SIZE;
|
||||
}
|
||||
|
||||
return SYS_ERR_OK;
|
||||
}
|
||||
|
||||
static errval_t test_paging_unmap(struct paging_state *paging_state) {
|
||||
errval_t err;
|
||||
|
||||
void *retaddr;
|
||||
struct capref frame;
|
||||
err = frame_alloc(&frame, BASE_PAGE_SIZE, NULL);
|
||||
if (err_is_fail(err)) {
|
||||
return err_push(err, LIB_ERR_FRAME_ALLOC);
|
||||
}
|
||||
err = paging_map_frame_attr(paging_state, &retaddr, BASE_PAGE_SIZE, frame, VREGION_FLAGS_READ_WRITE);
|
||||
if (err_is_fail(err)) {
|
||||
return err_push(err, LIB_ERR_PMAP_NOT_MAPPED);
|
||||
}
|
||||
err = paging_unmap(paging_state, retaddr);
|
||||
if (err_is_fail(err)) {
|
||||
return err_push(err, LIB_ERR_PMAP_UNMAP);
|
||||
}
|
||||
|
||||
// check that it was unmapped
|
||||
// *(uint8_t *) retaddr = 1;
|
||||
|
||||
err = paging_map_fixed_attr(paging_state, (lvaddr_t) retaddr, frame, BASE_PAGE_SIZE, VREGION_FLAGS_READ_WRITE);
|
||||
if (err_is_fail(err)) {
|
||||
return err_push(err, LIB_ERR_PMAP_NOT_MAPPED);
|
||||
}
|
||||
|
||||
*(uint8_t *) retaddr = 1;
|
||||
assert(*(uint8_t *)retaddr == 1);
|
||||
|
||||
return SYS_ERR_OK;
|
||||
}
|
||||
|
||||
static errval_t test_paging_foreign(struct paging_state *ignored) {
|
||||
errval_t err;
|
||||
|
||||
@ -191,6 +221,7 @@ void do_test_paging(void) {
|
||||
test_paging_run(test_paging_full_l2, "test_paging_full_l2", get_current_paging_state());
|
||||
test_paging_run(test_paging_big_regions, "test_paging_big_regions", get_current_paging_state());
|
||||
test_paging_run(test_paging_map_frame, "test_paging_map_frame", get_current_paging_state());
|
||||
test_paging_run(test_paging_unmap, "test_paging_unmap", get_current_paging_state());
|
||||
test_paging_run(test_paging_foreign, "test_paging_foreign", NULL);
|
||||
|
||||
// Test paging
|
||||
|
||||
Loading…
Reference in New Issue
Block a user