|
|
@ -512,7 +512,7 @@ public: |
|
|
fd = shm_open_anon(O_RDWR | O_CREAT | O_EXCL | O_NOFOLLOW, 0600); |
|
|
fd = shm_open_anon(O_RDWR | O_CREAT | O_EXCL | O_NOFOLLOW, 0600); |
|
|
#elif defined(__FreeBSD__)
|
|
|
#elif defined(__FreeBSD__)
|
|
|
fd = shm_open(SHM_ANON, O_RDWR, 0600); |
|
|
fd = shm_open(SHM_ANON, O_RDWR, 0600); |
|
|
#elif defined(__APPLE__) || defined(__managarm__)
|
|
|
|
|
|
|
|
|
#elif defined(__APPLE__)
|
|
|
// macOS doesn't have memfd_create, use anonymous temporary file
|
|
|
// macOS doesn't have memfd_create, use anonymous temporary file
|
|
|
char template_path[] = "/tmp/eden_mem_XXXXXX"; |
|
|
char template_path[] = "/tmp/eden_mem_XXXXXX"; |
|
|
fd = mkstemp(template_path); |
|
|
fd = mkstemp(template_path); |
|
|
@ -724,7 +724,7 @@ HostMemory::HostMemory(HostMemory&&) noexcept = default; |
|
|
HostMemory& HostMemory::operator=(HostMemory&&) noexcept = default; |
|
|
HostMemory& HostMemory::operator=(HostMemory&&) noexcept = default; |
|
|
|
|
|
|
|
|
void HostMemory::Map(size_t virtual_offset, size_t host_offset, size_t length, MemoryPermission perms, bool separate_heap) { |
|
|
void HostMemory::Map(size_t virtual_offset, size_t host_offset, size_t length, MemoryPermission perms, bool separate_heap) { |
|
|
#if !(defined(__OPENORBIS__) || defined(__managarm__))
|
|
|
|
|
|
|
|
|
#if !defined(__OPENORBIS__)
|
|
|
ASSERT(virtual_offset % PageAlignment == 0); |
|
|
ASSERT(virtual_offset % PageAlignment == 0); |
|
|
ASSERT(host_offset % PageAlignment == 0); |
|
|
ASSERT(host_offset % PageAlignment == 0); |
|
|
ASSERT(length % PageAlignment == 0); |
|
|
ASSERT(length % PageAlignment == 0); |
|
|
@ -738,7 +738,7 @@ void HostMemory::Map(size_t virtual_offset, size_t host_offset, size_t length, M |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void HostMemory::Unmap(size_t virtual_offset, size_t length, bool separate_heap) { |
|
|
void HostMemory::Unmap(size_t virtual_offset, size_t length, bool separate_heap) { |
|
|
#if !(defined(__OPENORBIS__) || defined(__managarm__))
|
|
|
|
|
|
|
|
|
#if !defined(__OPENORBIS__)
|
|
|
ASSERT(virtual_offset % PageAlignment == 0); |
|
|
ASSERT(virtual_offset % PageAlignment == 0); |
|
|
ASSERT(length % PageAlignment == 0); |
|
|
ASSERT(length % PageAlignment == 0); |
|
|
ASSERT(virtual_offset + length <= virtual_size); |
|
|
ASSERT(virtual_offset + length <= virtual_size); |
|
|
@ -750,7 +750,7 @@ void HostMemory::Unmap(size_t virtual_offset, size_t length, bool separate_heap) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void HostMemory::Protect(size_t virtual_offset, size_t length, MemoryPermission perm) { |
|
|
void HostMemory::Protect(size_t virtual_offset, size_t length, MemoryPermission perm) { |
|
|
#if !(defined(__OPENORBIS__) || defined(__managarm__))
|
|
|
|
|
|
|
|
|
#if !defined(__OPENORBIS__)
|
|
|
ASSERT(virtual_offset % PageAlignment == 0); |
|
|
ASSERT(virtual_offset % PageAlignment == 0); |
|
|
ASSERT(length % PageAlignment == 0); |
|
|
ASSERT(length % PageAlignment == 0); |
|
|
ASSERT(virtual_offset + length <= virtual_size); |
|
|
ASSERT(virtual_offset + length <= virtual_size); |
|
|
@ -769,7 +769,7 @@ void HostMemory::ClearBackingRegion(size_t physical_offset, size_t length, u32 f |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void HostMemory::EnableDirectMappedAddress() { |
|
|
void HostMemory::EnableDirectMappedAddress() { |
|
|
#if !(defined(__OPENORBIS__) || defined(__managarm__))
|
|
|
|
|
|
|
|
|
#if !defined(__OPENORBIS__)
|
|
|
if (impl) { |
|
|
if (impl) { |
|
|
impl->EnableDirectMappedAddress(); |
|
|
impl->EnableDirectMappedAddress(); |
|
|
virtual_size += reinterpret_cast<uintptr_t>(virtual_base); |
|
|
virtual_size += reinterpret_cast<uintptr_t>(virtual_base); |
|
|
|