#include #include #include #include #include void *mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset) { mmap_args_t args = { .addr = addr, .len = len, .prot = prot, .flags = flags, .fd = fd, .offset = offset, }; long ret = syscall1(SYS_MMAP, (uintptr_t)&args); if (ret < 0) { errno = (int)-ret; return MAP_FAILED; } return (void *)ret; } int mprotect(void *addr, size_t len, int prot) { return (int)__SYSCALL_ERRNO(syscall3(SYS_MPROTECT, (uintptr_t)addr, (uintptr_t)len, (uintptr_t)prot)); } int munmap(void *addr, size_t len) { return (int)__SYSCALL_ERRNO(syscall2(SYS_MUNMAP, (uintptr_t)addr, (uintptr_t)len)); }