Luna/libc/src/sys/mman.cpp

45 lines
1.1 KiB
C++
Raw Normal View History

#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);
}
2023-08-02 20:44:54 +00:00
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);
}
}