// gcc -o mlock -Itools/include -Itools/libxc/ -Ltools/libxc/ -lxenctrl mlock.c #include #include extern int hcall_buf_prep(void **addr, size_t len); extern void hcall_buf_release(void **addr, size_t len); int main(void) { xc_interface *xc = xc_interface_open(NULL, NULL, 0); int ret; void *mybuf = malloc(0x3000); void *mybuf2 = mybuf + 0x40; printf("xc interface is %p\n", xc); printf("before prep buf is %p / %p\n", mybuf, mybuf2); hcall_buf_prep(&mybuf2, 0x200); printf("after prep buf is %p / %p\n", mybuf, mybuf2); hcall_buf_release(&mybuf2, 0x200); printf("after release buf is %p / %p\n", mybuf, mybuf2); ret = xc_interface_close(xc); printf("xc interface close returned %d\n", ret); return 0; }