hle: kernel: KThread: Improve Increment/Decrement RunningThreadCount.
- Previously implementation was incorrect, and would occasionally underflow.
This commit is contained in:
parent
5b57ee66ce
commit
59add00d4a
3 changed files with 21 additions and 24 deletions
|
@ -215,7 +215,6 @@ ResultCode KThread::Initialize(KThreadFunction func, uintptr_t arg, VAddr user_s
|
|||
|
||||
parent = owner;
|
||||
parent->Open();
|
||||
parent->IncrementThreadCount();
|
||||
}
|
||||
|
||||
// Initialize thread context.
|
||||
|
@ -327,11 +326,6 @@ void KThread::Finalize() {
|
|||
}
|
||||
}
|
||||
|
||||
// Decrement the parent process's thread count.
|
||||
if (parent != nullptr) {
|
||||
parent->DecrementThreadCount();
|
||||
}
|
||||
|
||||
// Perform inherited finalization.
|
||||
KSynchronizationObject::Finalize();
|
||||
}
|
||||
|
@ -1011,7 +1005,7 @@ ResultCode KThread::Run() {
|
|||
if (IsUserThread() && IsSuspended()) {
|
||||
this->UpdateState();
|
||||
}
|
||||
owner->IncrementThreadCount();
|
||||
owner->IncrementRunningThreadCount();
|
||||
}
|
||||
|
||||
// Set our state and finish.
|
||||
|
@ -1026,10 +1020,11 @@ ResultCode KThread::Run() {
|
|||
void KThread::Exit() {
|
||||
ASSERT(this == GetCurrentThreadPointer(kernel));
|
||||
|
||||
// Release the thread resource hint from parent.
|
||||
// Release the thread resource hint, running thread count from parent.
|
||||
if (parent != nullptr) {
|
||||
parent->GetResourceLimit()->Release(Kernel::LimitableResource::Threads, 0, 1);
|
||||
resource_limit_release_hint = true;
|
||||
parent->DecrementRunningThreadCount();
|
||||
}
|
||||
|
||||
// Perform termination.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue