summaryrefslogtreecommitdiffstats
path: root/src/core/hle/kernel/k_page_table.h
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2022-02-02 04:34:24 +0100
committerbunnei <bunneidev@gmail.com>2022-02-02 04:34:24 +0100
commit995e27e9b734c8cdd7df6279c698bbd9123bc483 (patch)
tree60f3d4a739ab4da831d85686794a82b80683dc04 /src/core/hle/kernel/k_page_table.h
parentMerge pull request #7809 from Morph1984/clock-constants (diff)
downloadyuzu-995e27e9b734c8cdd7df6279c698bbd9123bc483.tar
yuzu-995e27e9b734c8cdd7df6279c698bbd9123bc483.tar.gz
yuzu-995e27e9b734c8cdd7df6279c698bbd9123bc483.tar.bz2
yuzu-995e27e9b734c8cdd7df6279c698bbd9123bc483.tar.lz
yuzu-995e27e9b734c8cdd7df6279c698bbd9123bc483.tar.xz
yuzu-995e27e9b734c8cdd7df6279c698bbd9123bc483.tar.zst
yuzu-995e27e9b734c8cdd7df6279c698bbd9123bc483.zip
Diffstat (limited to '')
-rw-r--r--src/core/hle/kernel/k_page_table.h15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/core/hle/kernel/k_page_table.h b/src/core/hle/kernel/k_page_table.h
index 60ae9b9e8..142c3220b 100644
--- a/src/core/hle/kernel/k_page_table.h
+++ b/src/core/hle/kernel/k_page_table.h
@@ -5,11 +5,11 @@
#pragma once
#include <memory>
-#include <mutex>
#include "common/common_types.h"
#include "common/page_table.h"
#include "core/file_sys/program_metadata.h"
+#include "core/hle/kernel/k_light_lock.h"
#include "core/hle/kernel/k_memory_block.h"
#include "core/hle/kernel/k_memory_manager.h"
#include "core/hle/result.h"
@@ -142,11 +142,12 @@ private:
}
bool IsLockedByCurrentThread() const {
- return true;
+ return general_lock.IsLockedByCurrentThread();
}
- std::recursive_mutex page_table_lock;
- std::mutex map_physical_memory_lock;
+ mutable KLightLock general_lock;
+ mutable KLightLock map_physical_memory_lock;
+
std::unique_ptr<KMemoryBlockManager> block_manager;
public:
@@ -205,7 +206,7 @@ public:
return alias_code_region_end - alias_code_region_start;
}
size_t GetNormalMemorySize() {
- std::lock_guard lk(page_table_lock);
+ KScopedLightLock lk(general_lock);
return GetHeapSize() + mapped_physical_memory_size;
}
constexpr std::size_t GetAddressSpaceWidth() const {
@@ -247,7 +248,9 @@ public:
constexpr bool IsInsideASLRRegion(VAddr address, std::size_t size) const {
return !IsOutsideASLRRegion(address, size);
}
- constexpr PAddr GetPhysicalAddr(VAddr addr) {
+
+ PAddr GetPhysicalAddr(VAddr addr) {
+ ASSERT(IsLockedByCurrentThread());
const auto backing_addr = page_table_impl.backing_addr[addr >> PageBits];
ASSERT(backing_addr);
return backing_addr + addr;