diff --git a/rpcsx-os/iodev/shm.cpp b/rpcsx-os/iodev/shm.cpp index 694a416..6a8d3b2 100644 --- a/rpcsx-os/iodev/shm.cpp +++ b/rpcsx-os/iodev/shm.cpp @@ -28,22 +28,25 @@ orbis::ErrorCode ShmDevice::open(orbis::Ref *file, auto realFlags = O_RDWR; // TODO std::size_t size = 0; - if (name == "/rpcsx-SceShellCoreUtil") { - // TODO + if (~flags & 0x200) { + if (name == "/rpcsx-SceShellCoreUtil") { + // TODO + realFlags |= O_CREAT; + size = 0x4000; + } else if (name == "/rpcsx-vmicDdShmAin") { + // TODO + realFlags |= O_CREAT; + size = 0x4000; + } else if (name == "/rpcsx-SceNpPlusLogger") { + realFlags |= O_CREAT; + size = 0x4400; + } else { + ORBIS_LOG_ERROR("SHM: unknown shared memory", path); + thread->where(); + std::abort(); + } + } else { realFlags |= O_CREAT; - size = 0x4000; - } else if (name == "/rpcsx-vmicDdShmAin") { - // TODO - realFlags |= O_CREAT; - size = 0x4000; - } else if (name == "/rpcsx-SceNpPlusLogger") { - realFlags |= O_CREAT; - size = 0x4400; - thread->where(); - } else if (~flags & 0x200) { - ORBIS_LOG_ERROR("SHM: unknown shared memory", path); - thread->where(); - std::abort(); } int fd = shm_open(name.c_str(), realFlags, S_IRUSR | S_IWUSR);