diff --git a/src/kernel/semaphore.cpp b/src/kernel/semaphore.cpp index e71b45bcb..37217532d 100644 --- a/src/kernel/semaphore.cpp +++ b/src/kernel/semaphore.cpp @@ -198,12 +198,6 @@ KernelSemaPrivate::Result KernelSemaPrivate::Wait(int need_count, uint32_t* ptr_ infinitely = false; } - uint32_t elapsed = 0; - Common::Timer t; - t.Start(); - - int id = Common::Thread::GetThreadIdUnique(); - if (m_count >= need_count) { m_count -= need_count; if (ptr_micros != nullptr) { @@ -216,6 +210,12 @@ KernelSemaPrivate::Result KernelSemaPrivate::Wait(int need_count, uint32_t* ptr_ return Result::TimedOut; } + uint32_t elapsed = 0; + Common::Timer t; + t.Start(); + + int id = Common::Thread::GetThreadIdUnique(); + WaitingThread waiter {}; waiter.id = id; waiter.priority = (m_fifo_order ? 0 : Libs::LibKernel::PthreadGetCurrentPriorityForKernel());