1
0
Fork 0
mirror of https://github.com/Atmosphere-NX/Atmosphere.git synced 2024-12-19 00:42:06 +00:00

kern: update KConditionVariable::WaitForAddress/Wait

This commit is contained in:
Michael Scire 2021-04-07 10:19:35 -07:00 committed by SciresM
parent 19b253fd17
commit 504472af4e

View file

@ -102,14 +102,13 @@ namespace ams::kern {
} }
} }
MESOSPHERE_ASSERT(owner_thread.IsNotNull()); MESOSPHERE_ASSERT(owner_thread.IsNotNull());
}
/* Remove the thread as a waiter from the lock owner. */ /* Remove the thread as a waiter from the lock owner. */
{ {
KScopedSchedulerLock sl; KScopedSchedulerLock sl;
KThread *owner_thread = cur_thread->GetLockOwner(); if (KThread *mutex_owner = cur_thread->GetLockOwner(); mutex_owner != nullptr) {
if (owner_thread != nullptr) { mutex_owner->RemoveWaiter(cur_thread);
owner_thread->RemoveWaiter(cur_thread); }
} }
} }
@ -250,11 +249,6 @@ namespace ams::kern {
} }
} }
/* Cancel the timer wait. */
if (timer != nullptr) {
timer->CancelTask(cur_thread);
}
/* Remove from the condition variable. */ /* Remove from the condition variable. */
{ {
KScopedSchedulerLock sl; KScopedSchedulerLock sl;
@ -269,6 +263,11 @@ namespace ams::kern {
} }
} }
/* Cancel the timer wait. */
if (timer != nullptr) {
timer->CancelTask(cur_thread);
}
/* Get the result. */ /* Get the result. */
KSynchronizationObject *dummy; KSynchronizationObject *dummy;
return cur_thread->GetWaitResult(std::addressof(dummy)); return cur_thread->GetWaitResult(std::addressof(dummy));