From abb39478df3046ece4990e40c19018a9999b2db9 Mon Sep 17 00:00:00 2001 From: Matheus Date: Sun, 31 Dec 2023 15:47:35 -0300 Subject: [PATCH] semaphore: don't sleep if theres no thread running on the cpu yet --- kernel-src/lib/semaphore.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/kernel-src/lib/semaphore.c b/kernel-src/lib/semaphore.c index 30a5aea0..520860b9 100644 --- a/kernel-src/lib/semaphore.c +++ b/kernel-src/lib/semaphore.c @@ -30,6 +30,11 @@ static thread_t *get(semaphore_t *sem) { } int semaphore_wait(semaphore_t *sem, bool interruptible) { + if (_cpu()->thread == NULL) { + while (semaphore_test(sem) == false) CPU_PAUSE(); + return 0; + } + bool intstate = interrupt_set(false); int ret = 0; spinlock_acquire(&sem->lock);