24 lines
737 B
C++
24 lines
737 B
C++
#include <luna/syscall.h>
|
|
#include <sys/mman.h>
|
|
#include <sys/syscall.h>
|
|
|
|
extern "C"
|
|
{
|
|
// FIXME: Implement a POSIX-compliant mmap.
|
|
void* mmap(void* addr, size_t len, int prot, int flags, int fd, off_t offset)
|
|
{
|
|
long result = __luna_syscall5(SYS_mmap, (sysarg_t)addr, (sysarg_t)len, (sysarg_t)prot,
|
|
flags & MAP_ANONYMOUS ? (sysarg_t)-1 : (sysarg_t)fd, (sysarg_t)offset);
|
|
_RETURN_WITH_MEMORY_ERRNO(result, void*);
|
|
}
|
|
|
|
int munmap(void* addr, size_t len)
|
|
{
|
|
return (int)__lc_fast_syscall2(SYS_munmap, addr, len);
|
|
}
|
|
|
|
int mprotect(void* addr, size_t size, int prot)
|
|
{
|
|
return (int)__lc_fast_syscall3(SYS_mprotect, addr, size, prot);
|
|
}
|
|
} |