diff options
author | bunnei <bunneidev@gmail.com> | 2022-01-12 01:26:17 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-12 01:26:17 +0100 |
commit | 599c0763e50cd48c0ba0fb24566c59dffefbb906 (patch) | |
tree | a42647f8c7d195ec55e942263c95a23b048e6af9 /src/core/hle/kernel/k_page_table.h | |
parent | Merge pull request #7633 from german77/hotkeys (diff) | |
parent | core: hle: kernel: svc: Updates to SetMemoryAttribute and SetMemoryPermission. (diff) | |
download | yuzu-599c0763e50cd48c0ba0fb24566c59dffefbb906.tar yuzu-599c0763e50cd48c0ba0fb24566c59dffefbb906.tar.gz yuzu-599c0763e50cd48c0ba0fb24566c59dffefbb906.tar.bz2 yuzu-599c0763e50cd48c0ba0fb24566c59dffefbb906.tar.lz yuzu-599c0763e50cd48c0ba0fb24566c59dffefbb906.tar.xz yuzu-599c0763e50cd48c0ba0fb24566c59dffefbb906.tar.zst yuzu-599c0763e50cd48c0ba0fb24566c59dffefbb906.zip |
Diffstat (limited to '')
-rw-r--r-- | src/core/hle/kernel/k_page_table.h | 47 |
1 files changed, 34 insertions, 13 deletions
diff --git a/src/core/hle/kernel/k_page_table.h b/src/core/hle/kernel/k_page_table.h index 564410dca..9235b822a 100644 --- a/src/core/hle/kernel/k_page_table.h +++ b/src/core/hle/kernel/k_page_table.h @@ -48,8 +48,7 @@ public: ResultCode ReserveTransferMemory(VAddr addr, std::size_t size, KMemoryPermission perm); ResultCode ResetTransferMemory(VAddr addr, std::size_t size); ResultCode SetMemoryPermission(VAddr addr, std::size_t size, Svc::MemoryPermission perm); - ResultCode SetMemoryAttribute(VAddr addr, std::size_t size, KMemoryAttribute mask, - KMemoryAttribute value); + ResultCode SetMemoryAttribute(VAddr addr, std::size_t size, u32 mask, u32 attr); ResultCode SetMaxHeapSize(std::size_t size); ResultCode SetHeapSize(VAddr* out, std::size_t size); ResultVal<VAddr> AllocateAndMapMemory(std::size_t needed_num_pages, std::size_t align, @@ -102,28 +101,50 @@ private: constexpr VAddr GetRegionAddress(KMemoryState state) const; constexpr std::size_t GetRegionSize(KMemoryState state) const; - constexpr ResultCode CheckMemoryState(const KMemoryInfo& info, KMemoryState state_mask, + ResultCode CheckMemoryStateContiguous(std::size_t* out_blocks_needed, VAddr addr, + std::size_t size, KMemoryState state_mask, KMemoryState state, KMemoryPermission perm_mask, KMemoryPermission perm, KMemoryAttribute attr_mask, KMemoryAttribute attr) const; + ResultCode CheckMemoryStateContiguous(VAddr addr, std::size_t size, KMemoryState state_mask, + KMemoryState state, KMemoryPermission perm_mask, + KMemoryPermission perm, KMemoryAttribute attr_mask, + KMemoryAttribute attr) const { + return this->CheckMemoryStateContiguous(nullptr, addr, size, state_mask, state, perm_mask, + perm, attr_mask, attr); + } + + ResultCode CheckMemoryState(const KMemoryInfo& info, KMemoryState state_mask, + KMemoryState state, KMemoryPermission perm_mask, + KMemoryPermission perm, KMemoryAttribute attr_mask, + KMemoryAttribute attr) const; ResultCode CheckMemoryState(KMemoryState* out_state, KMemoryPermission* out_perm, - KMemoryAttribute* out_attr, VAddr addr, std::size_t size, + KMemoryAttribute* out_attr, std::size_t* out_blocks_needed, + VAddr addr, std::size_t size, KMemoryState state_mask, + KMemoryState state, KMemoryPermission perm_mask, + KMemoryPermission perm, KMemoryAttribute attr_mask, + KMemoryAttribute attr, + KMemoryAttribute ignore_attr = DefaultMemoryIgnoreAttr) const; + ResultCode CheckMemoryState(std::size_t* out_blocks_needed, VAddr addr, std::size_t size, KMemoryState state_mask, KMemoryState state, KMemoryPermission perm_mask, KMemoryPermission perm, KMemoryAttribute attr_mask, KMemoryAttribute attr, - KMemoryAttribute ignore_attr = DefaultMemoryIgnoreAttr); - ResultCode CheckMemoryState(VAddr addr, std::size_t size, KMemoryState state_mask, + KMemoryAttribute ignore_attr = DefaultMemoryIgnoreAttr) const { + return CheckMemoryState(nullptr, nullptr, nullptr, out_blocks_needed, addr, size, + state_mask, state, perm_mask, perm, attr_mask, attr, ignore_attr); + } + ResultCode CheckMemoryState(VAddr addr, size_t size, KMemoryState state_mask, KMemoryState state, KMemoryPermission perm_mask, KMemoryPermission perm, KMemoryAttribute attr_mask, KMemoryAttribute attr, - KMemoryAttribute ignore_attr = DefaultMemoryIgnoreAttr) { - return CheckMemoryState(nullptr, nullptr, nullptr, addr, size, state_mask, state, perm_mask, - perm, attr_mask, attr, ignore_attr); + KMemoryAttribute ignore_attr = DefaultMemoryIgnoreAttr) const { + return this->CheckMemoryState(nullptr, addr, size, state_mask, state, perm_mask, perm, + attr_mask, attr, ignore_attr); + } + + bool IsLockedByCurrentThread() const { + return true; } - ResultCode CheckMemoryState(size_t* out_blocks_needed, VAddr addr, size_t size, - KMemoryState state_mask, KMemoryState state, - KMemoryPermission perm_mask, KMemoryPermission perm, - KMemoryAttribute attr_mask, KMemoryAttribute attr) const; std::recursive_mutex page_table_lock; std::unique_ptr<KMemoryBlockManager> block_manager; |