From e98eb4659e1c5c2b0afd0df1a207febaa3882eb3 Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Mon, 9 Nov 2020 17:15:57 +0300 Subject: [PATCH] Implement utils::memory_lock --- rpcs3/util/vm.hpp | 3 +++ rpcs3/util/vm_native.cpp | 9 +++++++++ 2 files changed, 12 insertions(+) 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)