diff options
Diffstat (limited to 'src/core/hle/kernel/kernel.cpp')
| -rw-r--r-- | src/core/hle/kernel/kernel.cpp | 24 |
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 | ||
| 707 | std::shared_ptr<KResourceLimit> KernelCore::GetSystemResourceLimit() const { | 717 | const KResourceLimit* KernelCore::GetSystemResourceLimit() const { |
| 718 | return impl->system_resource_limit; | ||
| 719 | } | ||
| 720 | |||
| 721 | KResourceLimit* KernelCore::GetSystemResourceLimit() { | ||
| 708 | return impl->system_resource_limit; | 722 | return impl->system_resource_limit; |
| 709 | } | 723 | } |
| 710 | 724 | ||