diff --git a/rpcs3/util/vm.hpp b/rpcs3/util/vm.hpp index 0dcc02d574..689eded128 100644 --- a/rpcs3/util/vm.hpp +++ b/rpcs3/util/vm.hpp @@ -39,6 +39,9 @@ namespace utils // Set memory protection void memory_protect(void* pointer, std::size_t size, protection prot); + // Lock pages in memory + void memory_lock(void* pointer, std::size_t size); + // Shared memory handle class shm { diff --git a/rpcs3/util/vm_native.cpp b/rpcs3/util/vm_native.cpp index 2493142ab7..6a8190d714 100644 --- a/rpcs3/util/vm_native.cpp +++ b/rpcs3/util/vm_native.cpp @@ -180,6 +180,15 @@ namespace utils #endif } + void memory_lock(void* pointer, std::size_t size) + { +#ifdef _WIN32 + verify("VirtualLock" HERE), ::VirtualLock(pointer, size); +#else + verify("mlock" HERE), !::mlock(pointer, size); +#endif + } + shm::shm(u32 size, u32 flags) : m_size(::align(size, 0x10000)) , m_flags(flags)