From 962b90f699f2eb195abf566bdbd93a384f3cec36 Mon Sep 17 00:00:00 2001 From: uytvbn Date: Tue, 24 Oct 2017 23:12:33 +0200 Subject: [PATCH] [Linux] Implement virtual memory allocation --- src/xenia/base/memory_posix.cc | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/xenia/base/memory_posix.cc b/src/xenia/base/memory_posix.cc index 8010e5f18..8da6d9a1b 100644 --- a/src/xenia/base/memory_posix.cc +++ b/src/xenia/base/memory_posix.cc @@ -40,7 +40,13 @@ void* AllocFixed(void* base_address, size_t length, AllocationType allocation_type, PageAccess access) { // mmap does not support reserve / commit, so ignore allocation_type. uint32_t prot = ToPosixProtectFlags(access); - return mmap(base_address, length, prot, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + void* result = mmap(base_address, length, prot, + MAP_PRIVATE | MAP_FIXED | MAP_ANONYMOUS, -1, 0); + if (result == MAP_FAILED) { + return nullptr; + } else { + return result; + } } bool DeallocFixed(void* base_address, size_t length, @@ -91,7 +97,7 @@ FileMappingHandle CreateFileMappingHandle(const std::filesystem::path& path, } void CloseFileMappingHandle(FileMappingHandle handle) { - close((intptr_t)handle); + close(static_cast(reinterpret_cast(handle))); } void* MapFileView(FileMappingHandle handle, void* base_address, size_t length,