Luna/libc/src/sys/mman.cpp
apio b01aa72f17
All checks were successful
continuous-integration/drone/push Build is passing
libc+init+shmem-test: Add POSIX shared memory objects
2023-08-03 10:32:52 +02:00

45 lines
1.1 KiB
C++

#include <bits/errno-return.h>
#include <bits/mmap.h>
#include <fcntl.h>
#include <luna/Heap.h>
#include <stdio.h>
#include <sys/mman.h>
#include <sys/syscall.h>
#include <unistd.h>
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, &params);
__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);
}
}