summaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/process.cpp
diff options
context:
space:
mode:
authorGravatar Zach Hilman2019-06-10 00:28:33 -0400
committerGravatar Zach Hilman2019-06-10 00:28:33 -0400
commitfc0bf91a969cddeb2f84c3e7c3a862fe98f1d438 (patch)
treed0773fbb4563392af144e5caf70a2c4c7664d58c /src/core/hle/kernel/process.cpp
parentMerge pull request #2571 from lioncash/ref (diff)
downloadyuzu-fc0bf91a969cddeb2f84c3e7c3a862fe98f1d438.tar.gz
yuzu-fc0bf91a969cddeb2f84c3e7c3a862fe98f1d438.tar.xz
yuzu-fc0bf91a969cddeb2f84c3e7c3a862fe98f1d438.zip
kernel: Differentiate kernel and user processes when picking ID
This allows kernel internal type processes to be assigned IDs in the KIP range while userland processes are assigned in the user range.
Diffstat (limited to 'src/core/hle/kernel/process.cpp')
-rw-r--r--src/core/hle/kernel/process.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/core/hle/kernel/process.cpp b/src/core/hle/kernel/process.cpp
index 2b81a8d4f..7cfc513a1 100644
--- a/src/core/hle/kernel/process.cpp
+++ b/src/core/hle/kernel/process.cpp
@@ -48,7 +48,8 @@ void SetupMainThread(Process& owner_process, KernelCore& kernel, u32 priority) {
48} 48}
49} // Anonymous namespace 49} // Anonymous namespace
50 50
51SharedPtr<Process> Process::Create(Core::System& system, std::string name) { 51SharedPtr<Process> Process::Create(Core::System& system, std::string name,
52 Process::ProcessType type) {
52 auto& kernel = system.Kernel(); 53 auto& kernel = system.Kernel();
53 54
54 SharedPtr<Process> process(new Process(system)); 55 SharedPtr<Process> process(new Process(system));
@@ -56,7 +57,8 @@ SharedPtr<Process> Process::Create(Core::System& system, std::string name) {
56 process->resource_limit = kernel.GetSystemResourceLimit(); 57 process->resource_limit = kernel.GetSystemResourceLimit();
57 process->status = ProcessStatus::Created; 58 process->status = ProcessStatus::Created;
58 process->program_id = 0; 59 process->program_id = 0;
59 process->process_id = kernel.CreateNewProcessID(); 60 process->process_id = type == ProcessType::KernelInternal ? kernel.CreateNewKernelProcessID()
61 : kernel.CreateNewUserProcessID();
60 process->capabilities.InitializeForMetadatalessProcess(); 62 process->capabilities.InitializeForMetadatalessProcess();
61 63
62 std::mt19937 rng(Settings::values.rng_seed.value_or(0)); 64 std::mt19937 rng(Settings::values.rng_seed.value_or(0));