diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-07-23 08:25:39 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal@nekernel.org> | 2025-07-23 08:25:39 +0100 |
| commit | 3978ac0540a7e430a4a2a157d2e53653b5c37bd0 (patch) | |
| tree | 1fb4dd49051c51676c00a65d8282752a975fa1b7 /dev/kernel | |
| parent | c968cdc88ce9458ba5b2859f9d983dc404c6c0ee (diff) | |
feat: rtl_sem_wait: check semaphore for underflows.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'dev/kernel')
| -rw-r--r-- | dev/kernel/KernelKit/Semaphore.h | 13 |
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; |
