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