From afdee9abea39637eb145d7ddb98a316a597da1bd Mon Sep 17 00:00:00 2001 From: bunnei Date: Sat, 17 Dec 2022 23:29:15 -0800 Subject: common: host_memory: Implement for Android. --- src/common/host_memory.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/common/host_memory.cpp b/src/common/host_memory.cpp index 8e4f1f97a..703ddb4a4 100644 --- a/src/common/host_memory.cpp +++ b/src/common/host_memory.cpp @@ -11,6 +11,10 @@ #elif defined(__linux__) || defined(__FreeBSD__) // ^^^ Windows ^^^ vvv Linux vvv +#ifdef ANDROID +#include +#endif + #ifndef _GNU_SOURCE #define _GNU_SOURCE #endif @@ -366,17 +370,20 @@ public: } // Backing memory initialization -#if defined(__FreeBSD__) && __FreeBSD__ < 13 +#ifdef ANDROID + fd = ASharedMemory_create("HostMemory", backing_size); +#elif defined(__FreeBSD__) && __FreeBSD__ < 13 // XXX Drop after FreeBSD 12.* reaches EOL on 2024-06-30 fd = shm_open(SHM_ANON, O_RDWR, 0600); #else fd = memfd_create("HostMemory", 0); #endif - if (fd == -1) { + if (fd < 0) { LOG_CRITICAL(HW_Memory, "memfd_create failed: {}", strerror(errno)); throw std::bad_alloc{}; } +#ifndef ANDROID // Defined to extend the file with zeros int ret = ftruncate(fd, backing_size); if (ret != 0) { @@ -384,6 +391,7 @@ public: strerror(errno)); throw std::bad_alloc{}; } +#endif backing_base = static_cast( mmap(nullptr, backing_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0)); -- cgit v1.2.3