diff options
| author | 2022-02-21 12:33:17 -0800 | |
|---|---|---|
| committer | 2022-02-21 12:41:31 -0800 | |
| commit | a74fddc98f5c02b2d0be90c6d87ec3779300ee11 (patch) | |
| tree | b801352807790e645bca502bdfb0b9ad1195fef6 /src/core/core.cpp | |
| parent | core: hle: kernel: KEvent: Pass in owner KProcess on event creation. (diff) | |
| download | yuzu-a74fddc98f5c02b2d0be90c6d87ec3779300ee11.tar.gz yuzu-a74fddc98f5c02b2d0be90c6d87ec3779300ee11.tar.xz yuzu-a74fddc98f5c02b2d0be90c6d87ec3779300ee11.zip | |
core: hle: kernel: KProcess: Pass in KResourceLimit on process creation.
- This allows us to have a resource limit per process, rather than use the global system resource limit.
Diffstat (limited to 'src/core/core.cpp')
| -rw-r--r-- | src/core/core.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/core/core.cpp b/src/core/core.cpp index 3f9a7f44b..b0cfee3ee 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp | |||
| @@ -28,7 +28,9 @@ | |||
| 28 | #include "core/file_sys/vfs_real.h" | 28 | #include "core/file_sys/vfs_real.h" |
| 29 | #include "core/hardware_interrupt_manager.h" | 29 | #include "core/hardware_interrupt_manager.h" |
| 30 | #include "core/hid/hid_core.h" | 30 | #include "core/hid/hid_core.h" |
| 31 | #include "core/hle/kernel/k_memory_manager.h" | ||
| 31 | #include "core/hle/kernel/k_process.h" | 32 | #include "core/hle/kernel/k_process.h" |
| 33 | #include "core/hle/kernel/k_resource_limit.h" | ||
| 32 | #include "core/hle/kernel/k_scheduler.h" | 34 | #include "core/hle/kernel/k_scheduler.h" |
| 33 | #include "core/hle/kernel/kernel.h" | 35 | #include "core/hle/kernel/kernel.h" |
| 34 | #include "core/hle/kernel/physical_core.h" | 36 | #include "core/hle/kernel/physical_core.h" |
| @@ -252,9 +254,16 @@ struct System::Impl { | |||
| 252 | } | 254 | } |
| 253 | 255 | ||
| 254 | telemetry_session->AddInitialInfo(*app_loader, fs_controller, *content_provider); | 256 | telemetry_session->AddInitialInfo(*app_loader, fs_controller, *content_provider); |
| 257 | |||
| 258 | // Create a resource limit for the process. | ||
| 259 | const auto physical_memory_size = | ||
| 260 | kernel.MemoryManager().GetSize(Kernel::KMemoryManager::Pool::Application); | ||
| 261 | auto* resource_limit = Kernel::CreateResourceLimitForProcess(system, physical_memory_size); | ||
| 262 | |||
| 263 | // Create the process. | ||
| 255 | auto main_process = Kernel::KProcess::Create(system.Kernel()); | 264 | auto main_process = Kernel::KProcess::Create(system.Kernel()); |
| 256 | ASSERT(Kernel::KProcess::Initialize(main_process, system, "main", | 265 | ASSERT(Kernel::KProcess::Initialize(main_process, system, "main", |
| 257 | Kernel::KProcess::ProcessType::Userland) | 266 | Kernel::KProcess::ProcessType::Userland, resource_limit) |
| 258 | .IsSuccess()); | 267 | .IsSuccess()); |
| 259 | const auto [load_result, load_parameters] = app_loader->Load(*main_process, system); | 268 | const auto [load_result, load_parameters] = app_loader->Load(*main_process, system); |
| 260 | if (load_result != Loader::ResultStatus::Success) { | 269 | if (load_result != Loader::ResultStatus::Success) { |