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.
This commit is contained in:
		| @@ -3,7 +3,9 @@ | ||||
| // Refer to the license.txt file included. | ||||
|  | ||||
| #include "core/core.h" | ||||
| #include "core/core_timing.h" | ||||
| #include "core/hle/kernel/k_event.h" | ||||
| #include "core/hle/kernel/k_memory_manager.h" | ||||
| #include "core/hle/kernel/k_process.h" | ||||
| #include "core/hle/kernel/k_readable_event.h" | ||||
| #include "core/hle/kernel/k_resource_limit.h" | ||||
| @@ -15,10 +17,21 @@ namespace Service::KernelHelpers { | ||||
|  | ||||
| ServiceContext::ServiceContext(Core::System& system_, std::string name_) | ||||
|     : kernel(system_.Kernel()) { | ||||
|  | ||||
|     // Create a resource limit for the process. | ||||
|     const auto physical_memory_size = | ||||
|         kernel.MemoryManager().GetSize(Kernel::KMemoryManager::Pool::System); | ||||
|     auto* resource_limit = Kernel::CreateResourceLimitForProcess(system_, physical_memory_size); | ||||
|  | ||||
|     // Create the process. | ||||
|     process = Kernel::KProcess::Create(kernel); | ||||
|     ASSERT(Kernel::KProcess::Initialize(process, system_, std::move(name_), | ||||
|                                         Kernel::KProcess::ProcessType::Userland) | ||||
|                                         Kernel::KProcess::ProcessType::KernelInternal, | ||||
|                                         resource_limit) | ||||
|                .IsSuccess()); | ||||
|  | ||||
|     // Close reference to our resource limit, as the process opens one. | ||||
|     resource_limit->Close(); | ||||
| } | ||||
|  | ||||
| ServiceContext::~ServiceContext() { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 bunnei
					bunnei