From 0beed6a9b62bed31566f4fde90011c234788838b 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 68fdcd61b..1e55f99d9 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, @@ -90,7 +96,7 @@ FileMappingHandle CreateFileMappingHandle(std::wstring path, size_t length, } void CloseFileMappingHandle(FileMappingHandle handle) { - close((intptr_t)handle); + close(static_cast(reinterpret_cast(handle))); } void* MapFileView(FileMappingHandle handle, void* base_address, size_t length,