Added test for paging_unmap

This commit is contained in:
Sparchatus 2022-03-24 08:05:03 +00:00
parent 24b4c54978
commit ba1eaa12dc

View File

@ -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