summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Lioncash2018-12-18 22:53:58 -0500
committerGravatar Lioncash2018-12-18 22:54:01 -0500
commit62d437705367421a1b919922f1ecf3c4a43d75c5 (patch)
tree51530d41b1c101b0872d32b792570409c4485824 /src
parentkernel/svc: Correct output parameter for svcGetThreadId (diff)
downloadyuzu-62d437705367421a1b919922f1ecf3c4a43d75c5.tar.gz
yuzu-62d437705367421a1b919922f1ecf3c4a43d75c5.tar.xz
yuzu-62d437705367421a1b919922f1ecf3c4a43d75c5.zip
kernel/kernel: Use correct initial PID for userland Process instances
Starts the process ID counter off at 81, which is what the kernel itself checks against internally when creating processes. It's actually supposed to panic if the PID is less than 81 for a userland process.
Diffstat (limited to 'src')
-rw-r--r--src/core/hle/kernel/kernel.cpp6
-rw-r--r--src/core/hle/kernel/process.h12
2 files changed, 14 insertions, 4 deletions
diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp
index 2be39fb52..1c2290651 100644
--- a/src/core/hle/kernel/kernel.cpp
+++ b/src/core/hle/kernel/kernel.cpp
@@ -112,7 +112,7 @@ struct KernelCore::Impl {
112 112
113 void Shutdown() { 113 void Shutdown() {
114 next_object_id = 0; 114 next_object_id = 0;
115 next_process_id = 10; 115 next_process_id = Process::ProcessIDMin;
116 next_thread_id = 1; 116 next_thread_id = 1;
117 117
118 process_list.clear(); 118 process_list.clear();
@@ -153,9 +153,7 @@ struct KernelCore::Impl {
153 } 153 }
154 154
155 std::atomic<u32> next_object_id{0}; 155 std::atomic<u32> next_object_id{0};
156 // TODO(Subv): Start the process ids from 10 for now, as lower PIDs are 156 std::atomic<u64> next_process_id{Process::ProcessIDMin};
157 // reserved for low-level services
158 std::atomic<u64> next_process_id{10};
159 std::atomic<u64> next_thread_id{1}; 157 std::atomic<u64> next_thread_id{1};
160 158
161 // Lists all processes that exist in the current session. 159 // Lists all processes that exist in the current session.
diff --git a/src/core/hle/kernel/process.h b/src/core/hle/kernel/process.h
index 725bfa01a..7da367251 100644
--- a/src/core/hle/kernel/process.h
+++ b/src/core/hle/kernel/process.h
@@ -120,6 +120,18 @@ struct CodeSet final {
120 120
121class Process final : public WaitObject { 121class Process final : public WaitObject {
122public: 122public:
123 enum : u64 {
124 /// Lowest allowed process ID for a kernel initial process.
125 InitialKIPIDMin = 1,
126 /// Highest allowed process ID for a kernel initial process.
127 InitialKIPIDMax = 80,
128
129 /// Lowest allowed process ID for a userland process.
130 ProcessIDMin = 81,
131 /// Highest allowed process ID for a userland process.
132 ProcessIDMax = 0xFFFFFFFFFFFFFFFF,
133 };
134
123 static constexpr std::size_t RANDOM_ENTROPY_SIZE = 4; 135 static constexpr std::size_t RANDOM_ENTROPY_SIZE = 4;
124 136
125 static SharedPtr<Process> Create(KernelCore& kernel, std::string&& name); 137 static SharedPtr<Process> Create(KernelCore& kernel, std::string&& name);