diff options
| author | Amlal <amlal@el-mahrouss-logic.com> | 2024-09-11 11:45:52 +0200 |
|---|---|---|
| committer | Amlal <amlal@el-mahrouss-logic.com> | 2024-09-11 11:45:52 +0200 |
| commit | 8b6cc0cbe5e19e8114a65785e24bbcf4d22e0d2f (patch) | |
| tree | 3713620f703318ab9fb9ad6906263e68c64ee789 /dev/ZKA/KernelKit | |
| parent | 56fcf152004c913bddd19b6eeac1f96eb2c9b869 (diff) | |
IMP: Better architecture for task scheduling.
Signed-off-by: Amlal <amlal@el-mahrouss-logic.com>
Diffstat (limited to 'dev/ZKA/KernelKit')
| -rw-r--r-- | dev/ZKA/KernelKit/HardwareThreadScheduler.hxx | 17 | ||||
| -rw-r--r-- | dev/ZKA/KernelKit/UserProcessScheduler.hxx | 17 |
2 files changed, 32 insertions, 2 deletions
diff --git a/dev/ZKA/KernelKit/HardwareThreadScheduler.hxx b/dev/ZKA/KernelKit/HardwareThreadScheduler.hxx index 193f5bff..302724fa 100644 --- a/dev/ZKA/KernelKit/HardwareThreadScheduler.hxx +++ b/dev/ZKA/KernelKit/HardwareThreadScheduler.hxx @@ -87,7 +87,7 @@ namespace Kernel /// \brief Class to manage the thread scheduling. /// - class HardwareThreadScheduler final + class HardwareThreadScheduler final : public ISchedulerObject { private: friend class UserProcessHelper; @@ -105,6 +105,21 @@ namespace Kernel bool operator!() noexcept; operator bool() noexcept; + const Bool IsUser() override + { + return Yes; + } + + const Bool IsKernel() override + { + return No; + } + + const Bool HasMP() override + { + return kHandoverHeader->f_HardwareTables.f_MultiProcessingEnabled; + } + public: /// @brief Shared instance of the MP Mgr. /// @return the reference to the mp manager class. diff --git a/dev/ZKA/KernelKit/UserProcessScheduler.hxx b/dev/ZKA/KernelKit/UserProcessScheduler.hxx index 845c0081..3a6f03a1 100644 --- a/dev/ZKA/KernelKit/UserProcessScheduler.hxx +++ b/dev/ZKA/KernelKit/UserProcessScheduler.hxx @@ -257,7 +257,7 @@ namespace Kernel /// @brief UserProcess scheduler class. /// The main class which you call to schedule processes. - class UserProcessScheduler final + class UserProcessScheduler final : public ISchedulerObject { friend class UserProcessHelper; @@ -278,6 +278,21 @@ namespace Kernel SizeT Add(UserProcess processRef); Bool Remove(ProcessID processSlot); + const Bool IsUser() override + { + return Yes; + } + + const Bool IsKernel() override + { + return No; + } + + const Bool HasMP() override + { + return kHandoverHeader->f_HardwareTables.f_MultiProcessingEnabled; + } + public: Ref<UserProcess>& CurrentProcess(); SizeT Run() noexcept; |
