This commit is contained in:
Alex Sanchez-Stern 2025-01-17 07:09:42 -04:00 committed by GitHub
commit b47ad3fad1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 6 additions and 3 deletions

View File

@ -124,6 +124,9 @@ private:
int m_shm_fd = 0; int m_shm_fd = 0;
void* m_reserved_region = nullptr; void* m_reserved_region = nullptr;
std::size_t m_reserved_region_size = 0; std::size_t m_reserved_region_size = 0;
#ifndef ANDROID
std::string m_seg_name;
#endif
#endif #endif
}; };

View File

@ -30,20 +30,20 @@ MemArena::~MemArena() = default;
void MemArena::GrabSHMSegment(size_t size, std::string_view base_name) void MemArena::GrabSHMSegment(size_t size, std::string_view base_name)
{ {
const std::string file_name = fmt::format("/{}.{}", base_name, getpid()); m_seg_name = fmt::format("/{}.{}", base_name, getpid());
m_shm_fd = shm_open(file_name.c_str(), O_RDWR | O_CREAT | O_EXCL, 0600); m_shm_fd = shm_open(m_seg_name.c_str(), O_RDWR | O_CREAT | O_EXCL, 0600);
if (m_shm_fd == -1) if (m_shm_fd == -1)
{ {
ERROR_LOG_FMT(MEMMAP, "shm_open failed: {}", strerror(errno)); ERROR_LOG_FMT(MEMMAP, "shm_open failed: {}", strerror(errno));
return; return;
} }
shm_unlink(file_name.c_str());
if (ftruncate(m_shm_fd, size) < 0) if (ftruncate(m_shm_fd, size) < 0)
ERROR_LOG_FMT(MEMMAP, "Failed to allocate low memory space"); ERROR_LOG_FMT(MEMMAP, "Failed to allocate low memory space");
} }
void MemArena::ReleaseSHMSegment() void MemArena::ReleaseSHMSegment()
{ {
shm_unlink(m_seg_name.c_str());
close(m_shm_fd); close(m_shm_fd);
} }