#define _LUNA_SYSTEM_ERROR_EXTENSIONS #include #include #include #include #include extern "C" { void* mmap(void* addr, size_t len, int prot, int flags, int, off_t) { long rc = syscall(SYS_mmap, addr, len, prot, flags); __errno_return(rc, void*); } int munmap(void* addr, size_t len) { long rc = syscall(SYS_munmap, addr, len); __errno_return(rc, int); } } Result allocate_pages_impl(usize count) { long rc = syscall(SYS_mmap, nullptr, count * PAGE_SIZE, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS); if (rc < 0) { return err((int)-rc); } return (void*)rc; } Result release_pages_impl(void* address, usize count) { long rc = syscall(SYS_munmap, address, count * PAGE_SIZE); if (rc < 0) { return err((int)-rc); } return {}; }