summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/KernelKit
diff options
context:
space:
mode:
Diffstat (limited to 'dev/kernel/KernelKit')
-rw-r--r--dev/kernel/KernelKit/Semaphore.h13
1 files changed, 7 insertions, 6 deletions
diff --git a/dev/kernel/KernelKit/Semaphore.h b/dev/kernel/KernelKit/Semaphore.h
index 0d2b84da..686ce1c9 100644
--- a/dev/kernel/KernelKit/Semaphore.h
+++ b/dev/kernel/KernelKit/Semaphore.h
@@ -19,13 +19,9 @@
#define kSemaphoreCount (2)
-#define kSemaphoreIncrementOwner(sem) \
- (sem[kSemaphoreOwnerIndex]++)
-
-
-#define kSemaphoreDecrementOwner(sem) \
- (sem[kSemaphoreOwnerIndex]--)
+#define kSemaphoreIncrementOwner(sem) (sem[kSemaphoreOwnerIndex]++)
+#define kSemaphoreDecrementOwner(sem) (sem[kSemaphoreOwnerIndex]--)
namespace Kernel {
/// @brief Semaphore structure used for synchronization.
@@ -71,6 +67,11 @@ inline BOOL rtl_sem_wait(Semaphore& sem, UInt64 owner, UInt64 timeout, BOOL* con
return FALSE;
}
+ if (sem[kSemaphoreCountIndex] <= 0) {
+ err_global_get() = kErrorNetworkTimeout;
+ return FALSE;
+ }
+
if (timeout <= 0) {
err_global_get() = kErrorNetworkTimeout;