45 lines
1.1 KiB
C++
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, ¶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);
|
|
}
|
|
}
|