Don't unlink shared memory on Unix

Essentially adds the funcitonality from PR #6091 to Unix
platforms. This allows third party tools like DME and JuniorsToolbox
to access the shared memory region allowing them to manipulate game
memory for various functionality. To do this, keep the shared memory
object mapped to a name so that the other process can access it,
instead of unlinking it from the name right after creation. This might
leak files into the filesystem, like mentioned in
https://github.com/dolphin-emu/dolphin/pull/9834#discussion_r803123299,
but will only be one virtual file per dolphin so I think it's fine.
This commit is contained in:
Alex Sanchez-Stern 2024-09-09 18:20:07 -07:00
parent 5fe9e2f6ed
commit d8d8b5a847
No known key found for this signature in database
GPG Key ID: 166308C38EBFE012
1 changed files with 0 additions and 1 deletions

View File

@ -37,7 +37,6 @@ void MemArena::GrabSHMSegment(size_t size, std::string_view base_name)
ERROR_LOG_FMT(MEMMAP, "shm_open failed: {}", strerror(errno));
return;
}
shm_unlink(file_name.c_str());
if (ftruncate(m_shm_fd, size) < 0)
ERROR_LOG_FMT(MEMMAP, "Failed to allocate low memory space");
}