From a576467a84442eb8023ae52dac3562b4c2906406 Mon Sep 17 00:00:00 2001 From: wheremyfoodat <44909372+wheremyfoodat@users.noreply.github.com> Date: Sat, 30 Nov 2024 18:00:28 +0200 Subject: [PATCH] Fix Android again maybe pt 2 --- CMakeLists.txt | 2 +- third_party/host_memory/host_memory.cpp | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a22d5228..483fe3ac 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -630,7 +630,7 @@ if(ENABLE_HTTP_SERVER) target_compile_definitions(AlberCore PRIVATE PANDA3DS_ENABLE_HTTP_SERVER=1) endif() -if(ENABLE_FASTMEM AND NOT ANDROID) +if(ENABLE_FASTMEM) target_compile_definitions(AlberCore PRIVATE PANDA3DS_HARDWARE_FASTMEM=1) endif() diff --git a/third_party/host_memory/host_memory.cpp b/third_party/host_memory/host_memory.cpp index 485144af..abcadaa6 100644 --- a/third_party/host_memory/host_memory.cpp +++ b/third_party/host_memory/host_memory.cpp @@ -5,6 +5,10 @@ #define ARCHITECTURE_arm64 #endif +#ifndef __ANDROID__ +#define USING_FD +#endif + #ifdef _WIN32 #include @@ -34,12 +38,15 @@ #define MAP_NORESERVE 0 #endif -#endif // ^^^ Linux ^^^ -#ifndef __ANDROID__ -#define USING_FD +#ifdef USING_FD +#define MAYBE_ANONYMOUS(flags) (flags) +#else +#define MAYBE_ANONYMOUS(flags) (flags) | MAP_ANONYMOUS #endif +#endif // ^^^ Linux ^^^ + #include #include #include @@ -460,7 +467,7 @@ namespace Common { throw std::bad_alloc{}; } #endif - backing_base = static_cast(mmap(nullptr, backing_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0)); + backing_base = static_cast(mmap(nullptr, backing_size, PROT_READ | PROT_WRITE, MAYBE_ANONYMOUS(MAP_SHARED), fd, 0)); if (backing_base == MAP_FAILED) { Helpers::warn("mmap failed: {}", strerror(errno)); @@ -504,7 +511,7 @@ namespace Common { } #endif - void* ret = mmap(virtual_base + virtual_offset, length, flags, MAP_SHARED | MAP_FIXED, fd, host_offset); + void* ret = mmap(virtual_base + virtual_offset, length, flags, MAYBE_ANONYMOUS(MAP_SHARED | MAP_FIXED), fd, host_offset); ASSERT_MSG(ret != MAP_FAILED, "mmap failed: {}", strerror(errno)); }