diff options
| author | 2022-02-21 12:33:17 -0800 | |
|---|---|---|
| committer | 2022-02-21 12:41:31 -0800 | |
| commit | a74fddc98f5c02b2d0be90c6d87ec3779300ee11 (patch) | |
| tree | b801352807790e645bca502bdfb0b9ad1195fef6 /src/core/hle/kernel | |
| parent | core: hle: kernel: KEvent: Pass in owner KProcess on event creation. (diff) | |
| download | yuzu-a74fddc98f5c02b2d0be90c6d87ec3779300ee11.tar.gz yuzu-a74fddc98f5c02b2d0be90c6d87ec3779300ee11.tar.xz yuzu-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/kernel')
| -rw-r--r-- | src/core/hle/kernel/k_process.cpp | 11 | ||||
| -rw-r--r-- | src/core/hle/kernel/k_process.h | 2 |
2 files changed, 6 insertions, 7 deletions
diff --git a/src/core/hle/kernel/k_process.cpp b/src/core/hle/kernel/k_process.cpp index 85c506979..9233261cd 100644 --- a/src/core/hle/kernel/k_process.cpp +++ b/src/core/hle/kernel/k_process.cpp | |||
| @@ -123,12 +123,11 @@ private: | |||
| 123 | }; | 123 | }; |
| 124 | 124 | ||
| 125 | ResultCode KProcess::Initialize(KProcess* process, Core::System& system, std::string process_name, | 125 | ResultCode KProcess::Initialize(KProcess* process, Core::System& system, std::string process_name, |
| 126 | ProcessType type) { | 126 | ProcessType type, KResourceLimit* res_limit) { |
| 127 | auto& kernel = system.Kernel(); | 127 | auto& kernel = system.Kernel(); |
| 128 | 128 | ||
| 129 | process->name = std::move(process_name); | 129 | process->name = std::move(process_name); |
| 130 | 130 | process->resource_limit = res_limit; | |
| 131 | process->resource_limit = kernel.GetSystemResourceLimit(); | ||
| 132 | process->status = ProcessStatus::Created; | 131 | process->status = ProcessStatus::Created; |
| 133 | process->program_id = 0; | 132 | process->program_id = 0; |
| 134 | process->process_id = type == ProcessType::KernelInternal ? kernel.CreateNewKernelProcessID() | 133 | process->process_id = type == ProcessType::KernelInternal ? kernel.CreateNewKernelProcessID() |
| @@ -143,9 +142,6 @@ ResultCode KProcess::Initialize(KProcess* process, Core::System& system, std::st | |||
| 143 | 142 | ||
| 144 | kernel.AppendNewProcess(process); | 143 | kernel.AppendNewProcess(process); |
| 145 | 144 | ||
| 146 | // Open a reference to the resource limit. | ||
| 147 | process->resource_limit->Open(); | ||
| 148 | |||
| 149 | // Clear remaining fields. | 145 | // Clear remaining fields. |
| 150 | process->num_running_threads = 0; | 146 | process->num_running_threads = 0; |
| 151 | process->is_signaled = false; | 147 | process->is_signaled = false; |
| @@ -153,6 +149,9 @@ ResultCode KProcess::Initialize(KProcess* process, Core::System& system, std::st | |||
| 153 | process->is_suspended = false; | 149 | process->is_suspended = false; |
| 154 | process->schedule_count = 0; | 150 | process->schedule_count = 0; |
| 155 | 151 | ||
| 152 | // Open a reference to the resource limit. | ||
| 153 | process->resource_limit->Open(); | ||
| 154 | |||
| 156 | return ResultSuccess; | 155 | return ResultSuccess; |
| 157 | } | 156 | } |
| 158 | 157 | ||
diff --git a/src/core/hle/kernel/k_process.h b/src/core/hle/kernel/k_process.h index 38b446350..cf1b67428 100644 --- a/src/core/hle/kernel/k_process.h +++ b/src/core/hle/kernel/k_process.h | |||
| @@ -91,7 +91,7 @@ public: | |||
| 91 | static constexpr std::size_t RANDOM_ENTROPY_SIZE = 4; | 91 | static constexpr std::size_t RANDOM_ENTROPY_SIZE = 4; |
| 92 | 92 | ||
| 93 | static ResultCode Initialize(KProcess* process, Core::System& system, std::string process_name, | 93 | static ResultCode Initialize(KProcess* process, Core::System& system, std::string process_name, |
| 94 | ProcessType type); | 94 | ProcessType type, KResourceLimit* res_limit); |
| 95 | 95 | ||
| 96 | /// Gets a reference to the process' page table. | 96 | /// Gets a reference to the process' page table. |
| 97 | KPageTable& PageTable() { | 97 | KPageTable& PageTable() { |