#include #include #include #include #include #include #include #include extern "C" { void* mmap(void* addr, size_t len, int prot, int flags, int fd, off_t offset) { const mmap_params params { addr, len, prot, flags, fd, offset }; long rc = syscall(SYS_mmap, ¶ms); __errno_return(rc, void*); } int munmap(void* addr, size_t len) { long rc = syscall(SYS_munmap, addr, len); __errno_return(rc, int); } int msync(void* addr, size_t len, int) { long rc = syscall(SYS_msync, addr, len); __errno_return(rc, int); } int shm_open(const char* name, int oflag, mode_t mode) { char buf[BUFSIZ]; snprintf(buf, sizeof(buf), "/dev/shm%s", name); return open(buf, oflag | O_CLOEXEC, mode); } int shm_unlink(const char* name) { char buf[BUFSIZ]; snprintf(buf, sizeof(buf), "/dev/shm%s", name); return unlink(buf); } }