summaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/kernel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/hle/kernel/kernel.cpp')
-rw-r--r--src/core/hle/kernel/kernel.cpp24
1 files changed, 19 insertions, 5 deletions
diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp
index 472c71cf1..ada993f46 100644
--- a/src/core/hle/kernel/kernel.cpp
+++ b/src/core/hle/kernel/kernel.cpp
@@ -74,8 +74,8 @@ struct KernelCore::Impl {
74 Init::InitializeSlabHeaps(system, memory_layout); 74 Init::InitializeSlabHeaps(system, memory_layout);
75 75
76 // Initialize kernel memory and resources. 76 // Initialize kernel memory and resources.
77 InitializeMemoryLayout(memory_layout);
78 InitializeSystemResourceLimit(kernel, system.CoreTiming(), memory_layout); 77 InitializeSystemResourceLimit(kernel, system.CoreTiming(), memory_layout);
78 InitializeMemoryLayout(memory_layout);
79 InitializePageSlab(); 79 InitializePageSlab();
80 InitializeSchedulers(); 80 InitializeSchedulers();
81 InitializeSuspendThreads(); 81 InitializeSuspendThreads();
@@ -126,11 +126,19 @@ struct KernelCore::Impl {
126 126
127 exclusive_monitor.reset(); 127 exclusive_monitor.reset();
128 128
129 hid_shared_mem->Close();
129 hid_shared_mem = nullptr; 130 hid_shared_mem = nullptr;
131
132 font_shared_mem->Close();
130 font_shared_mem = nullptr; 133 font_shared_mem = nullptr;
134
135 irs_shared_mem->Close();
131 irs_shared_mem = nullptr; 136 irs_shared_mem = nullptr;
137
138 time_shared_mem->Close();
132 time_shared_mem = nullptr; 139 time_shared_mem = nullptr;
133 140
141 system_resource_limit->Close();
134 system_resource_limit = nullptr; 142 system_resource_limit = nullptr;
135 143
136 // Next host thead ID to use, 0-3 IDs represent core threads, >3 represent others 144 // Next host thead ID to use, 0-3 IDs represent core threads, >3 represent others
@@ -156,7 +164,9 @@ struct KernelCore::Impl {
156 void InitializeSystemResourceLimit(KernelCore& kernel, 164 void InitializeSystemResourceLimit(KernelCore& kernel,
157 const Core::Timing::CoreTiming& core_timing, 165 const Core::Timing::CoreTiming& core_timing,
158 const KMemoryLayout& memory_layout) { 166 const KMemoryLayout& memory_layout) {
159 system_resource_limit = std::make_shared<KResourceLimit>(kernel, core_timing); 167 system_resource_limit = KResourceLimit::Create(system.Kernel());
168 system_resource_limit->Initialize(&core_timing);
169
160 const auto [total_size, kernel_size] = memory_layout.GetTotalAndKernelMemorySizes(); 170 const auto [total_size, kernel_size] = memory_layout.GetTotalAndKernelMemorySizes();
161 171
162 // If setting the default system values fails, then something seriously wrong has occurred. 172 // If setting the default system values fails, then something seriously wrong has occurred.
@@ -627,11 +637,11 @@ struct KernelCore::Impl {
627 637
628 // Lists all processes that exist in the current session. 638 // Lists all processes that exist in the current session.
629 std::vector<Process*> process_list; 639 std::vector<Process*> process_list;
630 Process* current_process = nullptr; 640 Process* current_process{};
631 std::unique_ptr<Kernel::GlobalSchedulerContext> global_scheduler_context; 641 std::unique_ptr<Kernel::GlobalSchedulerContext> global_scheduler_context;
632 Kernel::TimeManager time_manager; 642 Kernel::TimeManager time_manager;
633 643
634 std::shared_ptr<KResourceLimit> system_resource_limit; 644 KResourceLimit* system_resource_limit{};
635 645
636 std::shared_ptr<Core::Timing::EventType> preemption_event; 646 std::shared_ptr<Core::Timing::EventType> preemption_event;
637 647
@@ -704,7 +714,11 @@ void KernelCore::Shutdown() {
704 impl->Shutdown(); 714 impl->Shutdown();
705} 715}
706 716
707std::shared_ptr<KResourceLimit> KernelCore::GetSystemResourceLimit() const { 717const KResourceLimit* KernelCore::GetSystemResourceLimit() const {
718 return impl->system_resource_limit;
719}
720
721KResourceLimit* KernelCore::GetSystemResourceLimit() {
708 return impl->system_resource_limit; 722 return impl->system_resource_limit;
709} 723}
710 724