kernel/condition_variable: Add a fast-exit from Wait() for negative timeouts.

acquire_sem_etc does something very similar.
This commit is contained in:
Augustin Cavalier
2023-04-26 17:12:24 -04:00
parent d8e4f52b78
commit 9747721a43
+5
View File
@@ -214,6 +214,11 @@ ConditionVariableEntry::Wait(uint32 flags, bigtime_t timeout)
if (variable == NULL)
return fWaitStatus;
if ((flags & B_RELATIVE_TIMEOUT) != 0 && timeout <= 0) {
_RemoveFromVariable();
return B_WOULD_BLOCK;
}
InterruptsLocker _;
SpinLocker schedulerLocker(thread_get_current_thread()->scheduler_lock);