diff options
| author | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-08-20 02:53:51 +0200 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-08-20 02:53:51 +0200 |
| commit | 4eb813ba7247d9e2bebf255ecc50f68c0a71bb72 (patch) | |
| tree | f818bb72f3dcad6e03d77d7b2280b3172f9d29df /dev/ZKA/KernelKit/Timer.hxx | |
| parent | 860e40b89cca46050850afc79da958bb651d713f (diff) | |
+ IMP: Using Hybrid MP services on ZKA_EFI firmware.
+ Implement HPET on HardwareTimer and added a SoftwareTimer.
+ Implemented Hybrid MP Services on EFI.hxx.
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/ZKA/KernelKit/Timer.hxx')
| -rw-r--r-- | dev/ZKA/KernelKit/Timer.hxx | 37 |
1 files changed, 27 insertions, 10 deletions
diff --git a/dev/ZKA/KernelKit/Timer.hxx b/dev/ZKA/KernelKit/Timer.hxx index e6ef5d03..603cacff 100644 --- a/dev/ZKA/KernelKit/Timer.hxx +++ b/dev/ZKA/KernelKit/Timer.hxx @@ -12,24 +12,41 @@ namespace Kernel { - class HardwareTimer; - class HardwareTimerInterface; + class SoftwareTimer; + class TimerInterface; - class HardwareTimerInterface + class TimerInterface { public: /// @brief Default constructor - explicit HardwareTimerInterface() = default; - virtual ~HardwareTimerInterface() = default; + explicit TimerInterface() = default; + virtual ~TimerInterface() = default; public: - NEWOS_COPY_DEFAULT(HardwareTimerInterface); + NEWOS_COPY_DEFAULT(TimerInterface); public: virtual Int32 Wait() noexcept; }; - class HardwareTimer final : public HardwareTimerInterface + class SoftwareTimer final : public TimerInterface + { + public: + explicit SoftwareTimer(Int64 seconds); + ~SoftwareTimer() override; + + public: + NEWOS_COPY_DEFAULT(SoftwareTimer); + + public: + Int32 Wait() noexcept override; + + private: + IntPtr* fDigitalTimer{nullptr}; + Int64 fWaitFor{0}; + }; + + class HardwareTimer final : public TimerInterface { public: explicit HardwareTimer(Int64 seconds); @@ -41,7 +58,7 @@ namespace Kernel public: Int32 Wait() noexcept override; - public: + private: IntPtr* fDigitalTimer{nullptr}; Int64 fWaitFor{0}; }; @@ -51,7 +68,7 @@ namespace Kernel if (time < 0) return 0; - return 1000 / time; + return 1000 * time; } inline Int64 Milliseconds(Int64 time) @@ -59,6 +76,6 @@ namespace Kernel if (time < 0) return 0; - return 1000 / Seconds(time); + return 1000 * Seconds(time); } } // namespace Kernel |
