diff options
author | bunnei <bunneidev@gmail.com> | 2022-01-23 06:09:45 +0100 |
---|---|---|
committer | bunnei <bunneidev@gmail.com> | 2022-01-23 06:09:45 +0100 |
commit | 59add00d4a37a8f7b1bc8b4c39e46fae35150540 (patch) | |
tree | 2abba7ca021ee359440de7a98fa40062a06c8e7e /src/core/hle/kernel/k_process.cpp | |
parent | Merge pull request #7716 from german77/volume (diff) | |
download | yuzu-59add00d4a37a8f7b1bc8b4c39e46fae35150540.tar yuzu-59add00d4a37a8f7b1bc8b4c39e46fae35150540.tar.gz yuzu-59add00d4a37a8f7b1bc8b4c39e46fae35150540.tar.bz2 yuzu-59add00d4a37a8f7b1bc8b4c39e46fae35150540.tar.lz yuzu-59add00d4a37a8f7b1bc8b4c39e46fae35150540.tar.xz yuzu-59add00d4a37a8f7b1bc8b4c39e46fae35150540.tar.zst yuzu-59add00d4a37a8f7b1bc8b4c39e46fae35150540.zip |
Diffstat (limited to 'src/core/hle/kernel/k_process.cpp')
-rw-r--r-- | src/core/hle/kernel/k_process.cpp | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/src/core/hle/kernel/k_process.cpp b/src/core/hle/kernel/k_process.cpp index 265ac6fa1..85c506979 100644 --- a/src/core/hle/kernel/k_process.cpp +++ b/src/core/hle/kernel/k_process.cpp @@ -146,6 +146,13 @@ ResultCode KProcess::Initialize(KProcess* process, Core::System& system, std::st // Open a reference to the resource limit. process->resource_limit->Open(); + // Clear remaining fields. + process->num_running_threads = 0; + process->is_signaled = false; + process->exception_thread = nullptr; + process->is_suspended = false; + process->schedule_count = 0; + return ResultSuccess; } @@ -157,20 +164,17 @@ KResourceLimit* KProcess::GetResourceLimit() const { return resource_limit; } -void KProcess::IncrementThreadCount() { - ASSERT(num_threads >= 0); - num_created_threads++; - - if (const auto count = ++num_threads; count > peak_num_threads) { - peak_num_threads = count; - } +void KProcess::IncrementRunningThreadCount() { + ASSERT(num_running_threads.load() >= 0); + ++num_running_threads; } -void KProcess::DecrementThreadCount() { - ASSERT(num_threads > 0); +void KProcess::DecrementRunningThreadCount() { + ASSERT(num_running_threads.load() > 0); - if (const auto count = --num_threads; count == 0) { - LOG_WARNING(Kernel, "Process termination is not fully implemented."); + if (const auto prev = num_running_threads--; prev == 1) { + // TODO(bunnei): Process termination to be implemented when multiprocess is supported. + UNIMPLEMENTED_MSG("KProcess termination is not implemennted!"); } } |