summaryrefslogtreecommitdiff
path: root/src/core/core.cpp
diff options
context:
space:
mode:
authorGravatar bunnei2022-02-21 12:33:17 -0800
committerGravatar bunnei2022-02-21 12:41:31 -0800
commita74fddc98f5c02b2d0be90c6d87ec3779300ee11 (patch)
treeb801352807790e645bca502bdfb0b9ad1195fef6 /src/core/core.cpp
parentcore: hle: kernel: KEvent: Pass in owner KProcess on event creation. (diff)
downloadyuzu-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.cpp11
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) {