From fc0bf91a969cddeb2f84c3e7c3a862fe98f1d438 Mon Sep 17 00:00:00 2001 From: Zach Hilman Date: Mon, 10 Jun 2019 00:28:33 -0400 Subject: 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. --- src/core/hle/kernel/process.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/core/hle/kernel/process.cpp') 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) { } } // Anonymous namespace -SharedPtr Process::Create(Core::System& system, std::string name) { +SharedPtr Process::Create(Core::System& system, std::string name, + Process::ProcessType type) { auto& kernel = system.Kernel(); SharedPtr process(new Process(system)); @@ -56,7 +57,8 @@ SharedPtr Process::Create(Core::System& system, std::string name) { process->resource_limit = kernel.GetSystemResourceLimit(); process->status = ProcessStatus::Created; process->program_id = 0; - process->process_id = kernel.CreateNewProcessID(); + process->process_id = type == ProcessType::KernelInternal ? kernel.CreateNewKernelProcessID() + : kernel.CreateNewUserProcessID(); process->capabilities.InitializeForMetadatalessProcess(); std::mt19937 rng(Settings::values.rng_seed.value_or(0)); -- cgit v1.2.3