Skip to content
Permalink
Browse files
Merge pull request #6114 from leoetlino/fix
MemArena: Use names that are based on the PID
  • Loading branch information
degasus committed Oct 26, 2017
2 parents c4914fb + 28d648b commit 3f60173
Showing 1 changed file with 9 additions and 15 deletions.
@@ -55,31 +55,25 @@ static int AshmemCreateFileMapping(const char* name, size_t size)
void MemArena::GrabSHMSegment(size_t size)
{
#ifdef _WIN32
const std::string name = "dolphin-emu." + std::to_string(GetCurrentProcessId());
hMemoryMapping = CreateFileMapping(INVALID_HANDLE_VALUE, nullptr, PAGE_READWRITE, 0,
static_cast<DWORD>(size), L"Dolphin-emu");
static_cast<DWORD>(size), UTF8ToTStr(name).c_str());
#elif defined(ANDROID)
fd = AshmemCreateFileMapping("Dolphin-emu", size);
fd = AshmemCreateFileMapping(("dolphin-emu." + std::to_string(getpid())).c_str(), size);
if (fd < 0)
{
NOTICE_LOG(MEMMAP, "Ashmem allocation failed");
return;
}
#else
for (int i = 0; i < 10000; i++)
const std::string file_name = "/dolphin-emu." + std::to_string(getpid());
fd = shm_open(file_name.c_str(), O_RDWR | O_CREAT | O_EXCL, 0600);
if (fd == -1)
{
std::string file_name = StringFromFormat("/dolphinmem.%d", i);
fd = shm_open(file_name.c_str(), O_RDWR | O_CREAT | O_EXCL, 0600);
if (fd != -1)
{
shm_unlink(file_name.c_str());
break;
}
else if (errno != EEXIST)
{
ERROR_LOG(MEMMAP, "shm_open failed: %s", strerror(errno));
return;
}
ERROR_LOG(MEMMAP, "shm_open failed: %s", strerror(errno));
return;
}
shm_unlink(file_name.c_str());
if (ftruncate(fd, size) < 0)
ERROR_LOG(MEMMAP, "Failed to allocate low memory space");
#endif

0 comments on commit 3f60173

Please sign in to comment.