diff options
Diffstat (limited to 'dev/kernel/src/BinaryMutex.cc')
| -rw-r--r-- | dev/kernel/src/BinaryMutex.cc | 70 |
1 files changed, 0 insertions, 70 deletions
diff --git a/dev/kernel/src/BinaryMutex.cc b/dev/kernel/src/BinaryMutex.cc deleted file mode 100644 index 3c332b33..00000000 --- a/dev/kernel/src/BinaryMutex.cc +++ /dev/null @@ -1,70 +0,0 @@ -/* ======================================== - - Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license. - -======================================== */ - -#include <KernelKit/BinaryMutex.h> -#include <KernelKit/ProcessScheduler.h> - -namespace Kernel { -/***********************************************************************************/ -/// @brief Unlocks the binary mutex. -/***********************************************************************************/ - -Bool BinaryMutex::Unlock() noexcept { - if (fLockingProcess->Status == ProcessStatusKind::kRunning) { - fLockingProcess = nullptr; - - return Yes; - } - - return No; -} - -/***********************************************************************************/ -/// @brief Locks process in the binary mutex. -/***********************************************************************************/ - -Bool BinaryMutex::Lock(USER_PROCESS* process) { - if (!process || this->IsLocked()) return No; - - this->fLockingProcess = process; - - return Yes; -} - -/***********************************************************************************/ -/// @brief Checks if process is locked. -/***********************************************************************************/ - -Bool BinaryMutex::IsLocked() const { - return this->fLockingProcess->Status == ProcessStatusKind::kRunning; -} - -/***********************************************************************************/ -/// @brief Try lock or wait. -/***********************************************************************************/ - -Bool BinaryMutex::LockAndWait(USER_PROCESS* process, TimerInterface* timer) { - if (timer == nullptr) return No; - - this->Lock(process); - - timer->Wait(); - - return this->Lock(process); -} - -/***********************************************************************************/ -/// @brief Wait for process **sec** until we check if it's free. -/// @param sec seconds. -/***********************************************************************************/ - -BOOL BinaryMutex::WaitForProcess(const UInt32& sec) noexcept { - HardwareTimer hw_timer(rtl_milliseconds(sec)); - hw_timer.Wait(); - - return !this->IsLocked(); -} -} // namespace Kernel |
