summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/CMakeLists.txt2
-rw-r--r--src/core/hle/kernel/k_page_linked_list.h (renamed from src/core/hle/kernel/memory/page_linked_list.h)12
-rw-r--r--src/core/hle/kernel/k_shared_memory.cpp2
-rw-r--r--src/core/hle/kernel/k_shared_memory.h6
-rw-r--r--src/core/hle/kernel/memory/memory_manager.cpp6
-rw-r--r--src/core/hle/kernel/memory/memory_manager.h10
-rw-r--r--src/core/hle/kernel/memory/page_table.cpp30
-rw-r--r--src/core/hle/kernel/memory/page_table.h11
8 files changed, 41 insertions, 38 deletions
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index a304dd935..70dab3f74 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -171,6 +171,7 @@ add_library(core STATIC
171 hle/kernel/k_memory_block_manager.h 171 hle/kernel/k_memory_block_manager.h
172 hle/kernel/k_memory_layout.h 172 hle/kernel/k_memory_layout.h
173 hle/kernel/k_page_bitmap.h 173 hle/kernel/k_page_bitmap.h
174 hle/kernel/k_page_linked_list.h
174 hle/kernel/k_priority_queue.h 175 hle/kernel/k_priority_queue.h
175 hle/kernel/k_readable_event.cpp 176 hle/kernel/k_readable_event.cpp
176 hle/kernel/k_readable_event.h 177 hle/kernel/k_readable_event.h
@@ -201,7 +202,6 @@ add_library(core STATIC
201 hle/kernel/memory_types.h 202 hle/kernel/memory_types.h
202 hle/kernel/memory/memory_manager.cpp 203 hle/kernel/memory/memory_manager.cpp
203 hle/kernel/memory/memory_manager.h 204 hle/kernel/memory/memory_manager.h
204 hle/kernel/memory/page_linked_list.h
205 hle/kernel/memory/page_heap.cpp 205 hle/kernel/memory/page_heap.cpp
206 hle/kernel/memory/page_heap.h 206 hle/kernel/memory/page_heap.h
207 hle/kernel/memory/page_table.cpp 207 hle/kernel/memory/page_table.cpp
diff --git a/src/core/hle/kernel/memory/page_linked_list.h b/src/core/hle/kernel/k_page_linked_list.h
index 9b871f15b..64024d01f 100644
--- a/src/core/hle/kernel/memory/page_linked_list.h
+++ b/src/core/hle/kernel/k_page_linked_list.h
@@ -11,9 +11,9 @@
11#include "core/hle/kernel/memory_types.h" 11#include "core/hle/kernel/memory_types.h"
12#include "core/hle/result.h" 12#include "core/hle/result.h"
13 13
14namespace Kernel::Memory { 14namespace Kernel {
15 15
16class PageLinkedList final { 16class KPageLinkedList final {
17public: 17public:
18 class Node final { 18 class Node final {
19 public: 19 public:
@@ -33,8 +33,8 @@ public:
33 }; 33 };
34 34
35public: 35public:
36 PageLinkedList() = default; 36 KPageLinkedList() = default;
37 PageLinkedList(u64 address, u64 num_pages) { 37 KPageLinkedList(u64 address, u64 num_pages) {
38 ASSERT(AddBlock(address, num_pages).IsSuccess()); 38 ASSERT(AddBlock(address, num_pages).IsSuccess());
39 } 39 }
40 40
@@ -54,7 +54,7 @@ public:
54 return num_pages; 54 return num_pages;
55 } 55 }
56 56
57 bool IsEqual(PageLinkedList& other) const { 57 bool IsEqual(KPageLinkedList& other) const {
58 auto this_node = nodes.begin(); 58 auto this_node = nodes.begin();
59 auto other_node = other.nodes.begin(); 59 auto other_node = other.nodes.begin();
60 while (this_node != nodes.end() && other_node != other.nodes.end()) { 60 while (this_node != nodes.end() && other_node != other.nodes.end()) {
@@ -89,4 +89,4 @@ private:
89 std::list<Node> nodes; 89 std::list<Node> nodes;
90}; 90};
91 91
92} // namespace Kernel::Memory 92} // namespace Kernel
diff --git a/src/core/hle/kernel/k_shared_memory.cpp b/src/core/hle/kernel/k_shared_memory.cpp
index eb48afe9d..aade52764 100644
--- a/src/core/hle/kernel/k_shared_memory.cpp
+++ b/src/core/hle/kernel/k_shared_memory.cpp
@@ -20,7 +20,7 @@ KSharedMemory::~KSharedMemory() {
20 20
21std::shared_ptr<KSharedMemory> KSharedMemory::Create( 21std::shared_ptr<KSharedMemory> KSharedMemory::Create(
22 KernelCore& kernel, Core::DeviceMemory& device_memory, Process* owner_process, 22 KernelCore& kernel, Core::DeviceMemory& device_memory, Process* owner_process,
23 Memory::PageLinkedList&& page_list, KMemoryPermission owner_permission, 23 KPageLinkedList&& page_list, KMemoryPermission owner_permission,
24 KMemoryPermission user_permission, PAddr physical_address, std::size_t size, 24 KMemoryPermission user_permission, PAddr physical_address, std::size_t size,
25 std::string name) { 25 std::string name) {
26 26
diff --git a/src/core/hle/kernel/k_shared_memory.h b/src/core/hle/kernel/k_shared_memory.h
index 1ecb4f7dd..016e34be5 100644
--- a/src/core/hle/kernel/k_shared_memory.h
+++ b/src/core/hle/kernel/k_shared_memory.h
@@ -10,7 +10,7 @@
10#include "common/common_types.h" 10#include "common/common_types.h"
11#include "core/device_memory.h" 11#include "core/device_memory.h"
12#include "core/hle/kernel/k_memory_block.h" 12#include "core/hle/kernel/k_memory_block.h"
13#include "core/hle/kernel/memory/page_linked_list.h" 13#include "core/hle/kernel/k_page_linked_list.h"
14#include "core/hle/kernel/object.h" 14#include "core/hle/kernel/object.h"
15#include "core/hle/kernel/process.h" 15#include "core/hle/kernel/process.h"
16#include "core/hle/result.h" 16#include "core/hle/result.h"
@@ -26,7 +26,7 @@ public:
26 26
27 static std::shared_ptr<KSharedMemory> Create( 27 static std::shared_ptr<KSharedMemory> Create(
28 KernelCore& kernel, Core::DeviceMemory& device_memory, Process* owner_process, 28 KernelCore& kernel, Core::DeviceMemory& device_memory, Process* owner_process,
29 Memory::PageLinkedList&& page_list, KMemoryPermission owner_permission, 29 KPageLinkedList&& page_list, KMemoryPermission owner_permission,
30 KMemoryPermission user_permission, PAddr physical_address, std::size_t size, 30 KMemoryPermission user_permission, PAddr physical_address, std::size_t size,
31 std::string name); 31 std::string name);
32 32
@@ -76,7 +76,7 @@ public:
76private: 76private:
77 Core::DeviceMemory& device_memory; 77 Core::DeviceMemory& device_memory;
78 Process* owner_process{}; 78 Process* owner_process{};
79 Memory::PageLinkedList page_list; 79 KPageLinkedList page_list;
80 KMemoryPermission owner_permission{}; 80 KMemoryPermission owner_permission{};
81 KMemoryPermission user_permission{}; 81 KMemoryPermission user_permission{};
82 PAddr physical_address{}; 82 PAddr physical_address{};
diff --git a/src/core/hle/kernel/memory/memory_manager.cpp b/src/core/hle/kernel/memory/memory_manager.cpp
index ffda77374..00d5b15f3 100644
--- a/src/core/hle/kernel/memory/memory_manager.cpp
+++ b/src/core/hle/kernel/memory/memory_manager.cpp
@@ -8,8 +8,8 @@
8#include "common/assert.h" 8#include "common/assert.h"
9#include "common/common_types.h" 9#include "common/common_types.h"
10#include "common/scope_exit.h" 10#include "common/scope_exit.h"
11#include "core/hle/kernel/k_page_linked_list.h"
11#include "core/hle/kernel/memory/memory_manager.h" 12#include "core/hle/kernel/memory/memory_manager.h"
12#include "core/hle/kernel/memory/page_linked_list.h"
13#include "core/hle/kernel/svc_results.h" 13#include "core/hle/kernel/svc_results.h"
14 14
15namespace Kernel::Memory { 15namespace Kernel::Memory {
@@ -80,7 +80,7 @@ VAddr MemoryManager::AllocateAndOpenContinuous(std::size_t num_pages, std::size_
80 return allocated_block; 80 return allocated_block;
81} 81}
82 82
83ResultCode MemoryManager::Allocate(PageLinkedList& page_list, std::size_t num_pages, Pool pool, 83ResultCode MemoryManager::Allocate(KPageLinkedList& page_list, std::size_t num_pages, Pool pool,
84 Direction dir) { 84 Direction dir) {
85 ASSERT(page_list.GetNumPages() == 0); 85 ASSERT(page_list.GetNumPages() == 0);
86 86
@@ -149,7 +149,7 @@ ResultCode MemoryManager::Allocate(PageLinkedList& page_list, std::size_t num_pa
149 return RESULT_SUCCESS; 149 return RESULT_SUCCESS;
150} 150}
151 151
152ResultCode MemoryManager::Free(PageLinkedList& page_list, std::size_t num_pages, Pool pool, 152ResultCode MemoryManager::Free(KPageLinkedList& page_list, std::size_t num_pages, Pool pool,
153 Direction dir) { 153 Direction dir) {
154 // Early return if we're freeing no pages 154 // Early return if we're freeing no pages
155 if (!num_pages) { 155 if (!num_pages) {
diff --git a/src/core/hle/kernel/memory/memory_manager.h b/src/core/hle/kernel/memory/memory_manager.h
index 80dfbc8c2..d090979bd 100644
--- a/src/core/hle/kernel/memory/memory_manager.h
+++ b/src/core/hle/kernel/memory/memory_manager.h
@@ -13,9 +13,11 @@
13#include "core/hle/kernel/memory/page_heap.h" 13#include "core/hle/kernel/memory/page_heap.h"
14#include "core/hle/result.h" 14#include "core/hle/result.h"
15 15
16namespace Kernel::Memory { 16namespace Kernel {
17class KPageLinkedList;
18}
17 19
18class PageLinkedList; 20namespace Kernel::Memory {
19 21
20class MemoryManager final : NonCopyable { 22class MemoryManager final : NonCopyable {
21public: 23public:
@@ -48,9 +50,9 @@ public:
48 void InitializeManager(Pool pool, u64 start_address, u64 end_address); 50 void InitializeManager(Pool pool, u64 start_address, u64 end_address);
49 51
50 VAddr AllocateAndOpenContinuous(size_t num_pages, size_t align_pages, u32 option); 52 VAddr AllocateAndOpenContinuous(size_t num_pages, size_t align_pages, u32 option);
51 ResultCode Allocate(PageLinkedList& page_list, std::size_t num_pages, Pool pool, 53 ResultCode Allocate(KPageLinkedList& page_list, std::size_t num_pages, Pool pool,
52 Direction dir = Direction::FromFront); 54 Direction dir = Direction::FromFront);
53 ResultCode Free(PageLinkedList& page_list, std::size_t num_pages, Pool pool, 55 ResultCode Free(KPageLinkedList& page_list, std::size_t num_pages, Pool pool,
54 Direction dir = Direction::FromFront); 56 Direction dir = Direction::FromFront);
55 57
56 static constexpr std::size_t MaxManagerCount = 10; 58 static constexpr std::size_t MaxManagerCount = 10;
diff --git a/src/core/hle/kernel/memory/page_table.cpp b/src/core/hle/kernel/memory/page_table.cpp
index 183482648..c1efc23de 100644
--- a/src/core/hle/kernel/memory/page_table.cpp
+++ b/src/core/hle/kernel/memory/page_table.cpp
@@ -9,11 +9,11 @@
9#include "core/hle/kernel/k_address_space_info.h" 9#include "core/hle/kernel/k_address_space_info.h"
10#include "core/hle/kernel/k_memory_block.h" 10#include "core/hle/kernel/k_memory_block.h"
11#include "core/hle/kernel/k_memory_block_manager.h" 11#include "core/hle/kernel/k_memory_block_manager.h"
12#include "core/hle/kernel/k_page_linked_list.h"
12#include "core/hle/kernel/k_resource_limit.h" 13#include "core/hle/kernel/k_resource_limit.h"
13#include "core/hle/kernel/k_scoped_resource_reservation.h" 14#include "core/hle/kernel/k_scoped_resource_reservation.h"
14#include "core/hle/kernel/k_system_control.h" 15#include "core/hle/kernel/k_system_control.h"
15#include "core/hle/kernel/kernel.h" 16#include "core/hle/kernel/kernel.h"
16#include "core/hle/kernel/memory/page_linked_list.h"
17#include "core/hle/kernel/memory/page_table.h" 17#include "core/hle/kernel/memory/page_table.h"
18#include "core/hle/kernel/process.h" 18#include "core/hle/kernel/process.h"
19#include "core/hle/kernel/svc_results.h" 19#include "core/hle/kernel/svc_results.h"
@@ -285,7 +285,7 @@ ResultCode PageTable::MapProcessCode(VAddr addr, std::size_t num_pages, KMemoryS
285 return ResultInvalidCurrentMemory; 285 return ResultInvalidCurrentMemory;
286 } 286 }
287 287
288 PageLinkedList page_linked_list; 288 KPageLinkedList page_linked_list;
289 CASCADE_CODE( 289 CASCADE_CODE(
290 system.Kernel().MemoryManager().Allocate(page_linked_list, num_pages, memory_pool)); 290 system.Kernel().MemoryManager().Allocate(page_linked_list, num_pages, memory_pool));
291 CASCADE_CODE(Operate(addr, num_pages, page_linked_list, OperationType::MapGroup)); 291 CASCADE_CODE(Operate(addr, num_pages, page_linked_list, OperationType::MapGroup));
@@ -311,7 +311,7 @@ ResultCode PageTable::MapProcessCodeMemory(VAddr dst_addr, VAddr src_addr, std::
311 return ResultInvalidCurrentMemory; 311 return ResultInvalidCurrentMemory;
312 } 312 }
313 313
314 PageLinkedList page_linked_list; 314 KPageLinkedList page_linked_list;
315 AddRegionToPages(src_addr, num_pages, page_linked_list); 315 AddRegionToPages(src_addr, num_pages, page_linked_list);
316 316
317 { 317 {
@@ -363,7 +363,7 @@ ResultCode PageTable::UnmapProcessCodeMemory(VAddr dst_addr, VAddr src_addr, std
363 return RESULT_SUCCESS; 363 return RESULT_SUCCESS;
364} 364}
365 365
366void PageTable::MapPhysicalMemory(PageLinkedList& page_linked_list, VAddr start, VAddr end) { 366void PageTable::MapPhysicalMemory(KPageLinkedList& page_linked_list, VAddr start, VAddr end) {
367 auto node{page_linked_list.Nodes().begin()}; 367 auto node{page_linked_list.Nodes().begin()};
368 PAddr map_addr{node->GetAddress()}; 368 PAddr map_addr{node->GetAddress()};
369 std::size_t src_num_pages{node->GetNumPages()}; 369 std::size_t src_num_pages{node->GetNumPages()};
@@ -423,7 +423,7 @@ ResultCode PageTable::MapPhysicalMemory(VAddr addr, std::size_t size) {
423 return ResultResourceLimitedExceeded; 423 return ResultResourceLimitedExceeded;
424 } 424 }
425 425
426 PageLinkedList page_linked_list; 426 KPageLinkedList page_linked_list;
427 427
428 CASCADE_CODE( 428 CASCADE_CODE(
429 system.Kernel().MemoryManager().Allocate(page_linked_list, remaining_pages, memory_pool)); 429 system.Kernel().MemoryManager().Allocate(page_linked_list, remaining_pages, memory_pool));
@@ -485,7 +485,7 @@ ResultCode PageTable::UnmapMemory(VAddr addr, std::size_t size) {
485 485
486 const VAddr end_addr{addr + size}; 486 const VAddr end_addr{addr + size};
487 ResultCode result{RESULT_SUCCESS}; 487 ResultCode result{RESULT_SUCCESS};
488 PageLinkedList page_linked_list; 488 KPageLinkedList page_linked_list;
489 489
490 // Unmap each region within the range 490 // Unmap each region within the range
491 block_manager->IterateForRange(addr, end_addr, [&](const KMemoryInfo& info) { 491 block_manager->IterateForRange(addr, end_addr, [&](const KMemoryInfo& info) {
@@ -529,7 +529,7 @@ ResultCode PageTable::Map(VAddr dst_addr, VAddr src_addr, std::size_t size) {
529 return ResultInvalidCurrentMemory; 529 return ResultInvalidCurrentMemory;
530 } 530 }
531 531
532 PageLinkedList page_linked_list; 532 KPageLinkedList page_linked_list;
533 const std::size_t num_pages{size / PageSize}; 533 const std::size_t num_pages{size / PageSize};
534 534
535 AddRegionToPages(src_addr, num_pages, page_linked_list); 535 AddRegionToPages(src_addr, num_pages, page_linked_list);
@@ -570,8 +570,8 @@ ResultCode PageTable::Unmap(VAddr dst_addr, VAddr src_addr, std::size_t size) {
570 KMemoryPermission::None, KMemoryAttribute::Mask, 570 KMemoryPermission::None, KMemoryAttribute::Mask,
571 KMemoryAttribute::None, KMemoryAttribute::IpcAndDeviceMapped)); 571 KMemoryAttribute::None, KMemoryAttribute::IpcAndDeviceMapped));
572 572
573 PageLinkedList src_pages; 573 KPageLinkedList src_pages;
574 PageLinkedList dst_pages; 574 KPageLinkedList dst_pages;
575 const std::size_t num_pages{size / PageSize}; 575 const std::size_t num_pages{size / PageSize};
576 576
577 AddRegionToPages(src_addr, num_pages, src_pages); 577 AddRegionToPages(src_addr, num_pages, src_pages);
@@ -597,7 +597,7 @@ ResultCode PageTable::Unmap(VAddr dst_addr, VAddr src_addr, std::size_t size) {
597 return RESULT_SUCCESS; 597 return RESULT_SUCCESS;
598} 598}
599 599
600ResultCode PageTable::MapPages(VAddr addr, const PageLinkedList& page_linked_list, 600ResultCode PageTable::MapPages(VAddr addr, const KPageLinkedList& page_linked_list,
601 KMemoryPermission perm) { 601 KMemoryPermission perm) {
602 VAddr cur_addr{addr}; 602 VAddr cur_addr{addr};
603 603
@@ -619,7 +619,7 @@ ResultCode PageTable::MapPages(VAddr addr, const PageLinkedList& page_linked_lis
619 return RESULT_SUCCESS; 619 return RESULT_SUCCESS;
620} 620}
621 621
622ResultCode PageTable::MapPages(VAddr addr, PageLinkedList& page_linked_list, KMemoryState state, 622ResultCode PageTable::MapPages(VAddr addr, KPageLinkedList& page_linked_list, KMemoryState state,
623 KMemoryPermission perm) { 623 KMemoryPermission perm) {
624 std::lock_guard lock{page_table_lock}; 624 std::lock_guard lock{page_table_lock};
625 625
@@ -793,7 +793,7 @@ ResultVal<VAddr> PageTable::SetHeapSize(std::size_t size) {
793 return ResultResourceLimitedExceeded; 793 return ResultResourceLimitedExceeded;
794 } 794 }
795 795
796 PageLinkedList page_linked_list; 796 KPageLinkedList page_linked_list;
797 const std::size_t num_pages{delta / PageSize}; 797 const std::size_t num_pages{delta / PageSize};
798 798
799 CASCADE_CODE( 799 CASCADE_CODE(
@@ -841,7 +841,7 @@ ResultVal<VAddr> PageTable::AllocateAndMapMemory(std::size_t needed_num_pages, s
841 if (is_map_only) { 841 if (is_map_only) {
842 CASCADE_CODE(Operate(addr, needed_num_pages, perm, OperationType::Map, map_addr)); 842 CASCADE_CODE(Operate(addr, needed_num_pages, perm, OperationType::Map, map_addr));
843 } else { 843 } else {
844 PageLinkedList page_group; 844 KPageLinkedList page_group;
845 CASCADE_CODE( 845 CASCADE_CODE(
846 system.Kernel().MemoryManager().Allocate(page_group, needed_num_pages, memory_pool)); 846 system.Kernel().MemoryManager().Allocate(page_group, needed_num_pages, memory_pool));
847 CASCADE_CODE(Operate(addr, needed_num_pages, page_group, OperationType::MapGroup)); 847 CASCADE_CODE(Operate(addr, needed_num_pages, page_group, OperationType::MapGroup));
@@ -924,7 +924,7 @@ bool PageTable::IsRegionContiguous(VAddr addr, u64 size) const {
924} 924}
925 925
926void PageTable::AddRegionToPages(VAddr start, std::size_t num_pages, 926void PageTable::AddRegionToPages(VAddr start, std::size_t num_pages,
927 PageLinkedList& page_linked_list) { 927 KPageLinkedList& page_linked_list) {
928 VAddr addr{start}; 928 VAddr addr{start};
929 while (addr < start + (num_pages * PageSize)) { 929 while (addr < start + (num_pages * PageSize)) {
930 const PAddr paddr{GetPhysicalAddr(addr)}; 930 const PAddr paddr{GetPhysicalAddr(addr)};
@@ -945,7 +945,7 @@ VAddr PageTable::AllocateVirtualMemory(VAddr start, std::size_t region_num_pages
945 IsKernel() ? 1 : 4); 945 IsKernel() ? 1 : 4);
946} 946}
947 947
948ResultCode PageTable::Operate(VAddr addr, std::size_t num_pages, const PageLinkedList& page_group, 948ResultCode PageTable::Operate(VAddr addr, std::size_t num_pages, const KPageLinkedList& page_group,
949 OperationType operation) { 949 OperationType operation) {
950 std::lock_guard lock{page_table_lock}; 950 std::lock_guard lock{page_table_lock};
951 951
diff --git a/src/core/hle/kernel/memory/page_table.h b/src/core/hle/kernel/memory/page_table.h
index a4914d050..736583b81 100644
--- a/src/core/hle/kernel/memory/page_table.h
+++ b/src/core/hle/kernel/memory/page_table.h
@@ -40,7 +40,7 @@ public:
40 ResultCode UnmapMemory(VAddr addr, std::size_t size); 40 ResultCode UnmapMemory(VAddr addr, std::size_t size);
41 ResultCode Map(VAddr dst_addr, VAddr src_addr, std::size_t size); 41 ResultCode Map(VAddr dst_addr, VAddr src_addr, std::size_t size);
42 ResultCode Unmap(VAddr dst_addr, VAddr src_addr, std::size_t size); 42 ResultCode Unmap(VAddr dst_addr, VAddr src_addr, std::size_t size);
43 ResultCode MapPages(VAddr addr, PageLinkedList& page_linked_list, KMemoryState state, 43 ResultCode MapPages(VAddr addr, KPageLinkedList& page_linked_list, KMemoryState state,
44 KMemoryPermission perm); 44 KMemoryPermission perm);
45 ResultCode SetCodeMemoryPermission(VAddr addr, std::size_t size, KMemoryPermission perm); 45 ResultCode SetCodeMemoryPermission(VAddr addr, std::size_t size, KMemoryPermission perm);
46 KMemoryInfo QueryInfo(VAddr addr); 46 KMemoryInfo QueryInfo(VAddr addr);
@@ -79,15 +79,16 @@ private:
79 KMemoryAttribute::DeviceShared; 79 KMemoryAttribute::DeviceShared;
80 80
81 ResultCode InitializeMemoryLayout(VAddr start, VAddr end); 81 ResultCode InitializeMemoryLayout(VAddr start, VAddr end);
82 ResultCode MapPages(VAddr addr, const PageLinkedList& page_linked_list, KMemoryPermission perm); 82 ResultCode MapPages(VAddr addr, const KPageLinkedList& page_linked_list,
83 void MapPhysicalMemory(PageLinkedList& page_linked_list, VAddr start, VAddr end); 83 KMemoryPermission perm);
84 void MapPhysicalMemory(KPageLinkedList& page_linked_list, VAddr start, VAddr end);
84 bool IsRegionMapped(VAddr address, u64 size); 85 bool IsRegionMapped(VAddr address, u64 size);
85 bool IsRegionContiguous(VAddr addr, u64 size) const; 86 bool IsRegionContiguous(VAddr addr, u64 size) const;
86 void AddRegionToPages(VAddr start, std::size_t num_pages, PageLinkedList& page_linked_list); 87 void AddRegionToPages(VAddr start, std::size_t num_pages, KPageLinkedList& page_linked_list);
87 KMemoryInfo QueryInfoImpl(VAddr addr); 88 KMemoryInfo QueryInfoImpl(VAddr addr);
88 VAddr AllocateVirtualMemory(VAddr start, std::size_t region_num_pages, u64 needed_num_pages, 89 VAddr AllocateVirtualMemory(VAddr start, std::size_t region_num_pages, u64 needed_num_pages,
89 std::size_t align); 90 std::size_t align);
90 ResultCode Operate(VAddr addr, std::size_t num_pages, const PageLinkedList& page_group, 91 ResultCode Operate(VAddr addr, std::size_t num_pages, const KPageLinkedList& page_group,
91 OperationType operation); 92 OperationType operation);
92 ResultCode Operate(VAddr addr, std::size_t num_pages, KMemoryPermission perm, 93 ResultCode Operate(VAddr addr, std::size_t num_pages, KMemoryPermission perm,
93 OperationType operation, PAddr map_addr = 0); 94 OperationType operation, PAddr map_addr = 0);