aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/hle/service/kernel_helpers.cpp
diff options
context:
space:
mode:
authorbunnei <[email protected]>2022-02-21 12:33:17 -0800
committerbunnei <[email protected]>2022-02-21 12:41:31 -0800
commita74fddc98f5c02b2d0be90c6d87ec3779300ee11 (patch)
treeb801352807790e645bca502bdfb0b9ad1195fef6 /src/core/hle/service/kernel_helpers.cpp
parent57ebcbf2c4574e5d04d5b91ea2918b0d030ac92b (diff)
downloadyuzu-android-a74fddc98f5c02b2d0be90c6d87ec3779300ee11.tar.gz
yuzu-android-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/hle/service/kernel_helpers.cpp')
-rw-r--r--src/core/hle/service/kernel_helpers.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/core/hle/service/kernel_helpers.cpp b/src/core/hle/service/kernel_helpers.cpp
index d0c7bc0ce..b8c2c6e51 100644
--- a/src/core/hle/service/kernel_helpers.cpp
+++ b/src/core/hle/service/kernel_helpers.cpp
@@ -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() {