diff options
| author | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2025-03-16 16:42:09 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2025-03-16 16:42:09 +0100 |
| commit | 57921ca1d52dd3c3c988bf198b903c2da42f391a (patch) | |
| tree | b092732bc6c677536aed58366b149b17d1c46537 /dev/Kernel/KernelKit | |
| parent | 52779b9cc5b98ec201cc3a908a009469b4429647 (diff) | |
ADD: BinaryMutex class, and reworking Semaphore class.
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/Kernel/KernelKit')
| -rw-r--r-- | dev/Kernel/KernelKit/BinaryMutex.h | 43 | ||||
| -rw-r--r-- | dev/Kernel/KernelKit/Semaphore.h | 29 |
2 files changed, 44 insertions, 28 deletions
diff --git a/dev/Kernel/KernelKit/BinaryMutex.h b/dev/Kernel/KernelKit/BinaryMutex.h new file mode 100644 index 00000000..a8e18abf --- /dev/null +++ b/dev/Kernel/KernelKit/BinaryMutex.h @@ -0,0 +1,43 @@ +/* ------------------------------------------- + + Copyright (C) 2024-2025, Amlal EL Mahrouss, all rights reserved. + +------------------------------------------- */ + +#pragma once + +#include <NewKit/Defines.h> +#include <KernelKit/Timer.h> +#include <CompilerKit/CompilerKit.h> + +namespace NeOS +{ + class UserProcess; + + typedef UserProcess& UserProcessRef; + + /// @brief Access control class, which locks a task until one is done. + class BinaryMutex final + { + public: + explicit BinaryMutex() = default; + ~BinaryMutex() = default; + + public: + bool IsLocked() const; + bool Unlock() noexcept; + + public: + BOOL WaitForProcess(const Int16& sec) noexcept; + + public: + bool Lock(UserProcess& process); + bool LockOrWait(UserProcess& process, TimerInterface* timer); + + public: + NE_COPY_DEFAULT(BinaryMutex); + + private: + UserProcessRef fLockingProcess; + }; +} // namespace NeOS diff --git a/dev/Kernel/KernelKit/Semaphore.h b/dev/Kernel/KernelKit/Semaphore.h index 5d77b84d..f780872a 100644 --- a/dev/Kernel/KernelKit/Semaphore.h +++ b/dev/Kernel/KernelKit/Semaphore.h @@ -12,32 +12,5 @@ namespace NeOS { - class UserProcess; - typedef UserProcess& UserProcessRef; - - /// @brief Access control class, which locks a task until one is done. - class Semaphore final - { - public: - explicit Semaphore() = default; - ~Semaphore() = default; - - public: - bool IsLocked() const; - bool Unlock() noexcept; - - public: - void WaitForProcess() noexcept; - - public: - bool Lock(UserProcess& process); - bool LockOrWait(UserProcess& process, TimerInterface* timer); - - public: - NE_COPY_DEFAULT(Semaphore); - - private: - UserProcessRef fLockingProcess; - }; -} // namespace NeOS +} // namespace NeOS
\ No newline at end of file |
