summaryrefslogtreecommitdiffhomepage
path: root/dev/ZKA/KernelKit/Timer.hxx
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-08-20 02:53:51 +0200
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-08-20 02:53:51 +0200
commit4eb813ba7247d9e2bebf255ecc50f68c0a71bb72 (patch)
treef818bb72f3dcad6e03d77d7b2280b3172f9d29df /dev/ZKA/KernelKit/Timer.hxx
parent860e40b89cca46050850afc79da958bb651d713f (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.hxx37
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