From 83d870e58457a1d335a1d9b9966a6a1887cc297b Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Mon, 24 Nov 2025 03:02:43 +0100 Subject: feat! breaking changes on kernel sources. Signed-off-by: Amlal El Mahrouss --- dev/kernel/KernelKit/HardwareThreadScheduler.h | 135 ------------------------- 1 file changed, 135 deletions(-) delete mode 100644 dev/kernel/KernelKit/HardwareThreadScheduler.h (limited to 'dev/kernel/KernelKit/HardwareThreadScheduler.h') diff --git a/dev/kernel/KernelKit/HardwareThreadScheduler.h b/dev/kernel/KernelKit/HardwareThreadScheduler.h deleted file mode 100644 index 36a870ba..00000000 --- a/dev/kernel/KernelKit/HardwareThreadScheduler.h +++ /dev/null @@ -1,135 +0,0 @@ -/* ======================================== - - Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license. - -======================================== */ - -#ifndef __INC_MP_MANAGER_H__ -#define __INC_MP_MANAGER_H__ - -#include -#include -#include - -/// @note Last Rev Sun 28 Jul CET 2024 -/// @note Last Rev Thu, Aug 1, 2024 9:07:38 AM - -#define kMaxAPInsideSched (4U) - -namespace Kernel { -class HardwareThread; -class HardwareThreadScheduler; - -using ThreadID = UInt32; - -enum ThreadKind { - kAPInvalid = 0, - kAPSystemReserved = 100, // System reserved thread, well user can't use it - kAPStandard, // user thread, cannot be used by Kernel - kAPRealTime, // fallback thread, cannot be used by user if not clear or - // used by Kernel. - kAPBoot, // The core we booted from, the mama. - kAPCount, -}; - -typedef enum ThreadKind ThreadKind; -typedef ThreadID ThreadID; - -/***********************************************************************************/ -/// -/// \name HardwareThread -/// \brief Abstraction over the CPU's core, used to run processes or threads. -/// -/***********************************************************************************/ - -class HardwareThread final { - public: - explicit HardwareThread(); - ~HardwareThread(); - - public: - NE_COPY_DEFAULT(HardwareThread) - - public: - operator bool(); - - public: - void Wake(const BOOL wakeup = false) noexcept; - void Busy(const BOOL busy = false) noexcept; - - public: - BOOL Switch(HAL::StackFramePtr frame); - BOOL IsWakeup() noexcept; - - public: - HAL::StackFramePtr StackFrame() noexcept; - ThreadKind& Kind() noexcept; - BOOL IsBusy() noexcept; - ThreadID& ID() noexcept; - - private: - HAL::StackFramePtr fStack{nullptr}; - ThreadKind fKind{ThreadKind::kAPStandard}; - ThreadID fID{0}; - Bool fWakeup{NO}; - Bool fBusy{NO}; - UInt64 fPTime{0}; - - private: - friend class HardwareThreadScheduler; - friend class UserProcessHelper; -}; - -/// -/// \name HardwareThreadScheduler -/// \brief Class to manage the thread scheduling. -/// - -class HardwareThreadScheduler final : public ISchedulable { - private: - friend class UserProcessHelper; - - public: - explicit HardwareThreadScheduler(); - ~HardwareThreadScheduler(); - NE_COPY_DEFAULT(HardwareThreadScheduler) - - public: - HAL::StackFramePtr Leak() noexcept; - - public: - Ref operator[](SizeT idx); - bool operator!() noexcept; - operator bool() noexcept; - - Bool IsUser() override { return Yes; } - - Bool IsKernel() override { return No; } - - 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. - STATIC HardwareThreadScheduler& The(); - - public: - /// @brief Returns the amount of threads present in the system. - /// @returns SizeT the amount of cores present. - SizeT Capacity() noexcept; - - private: - Array fThreadList; - ThreadID fCurrentThreadIdx{0}; -}; - -/// @brief wakes up thread. -/// wakes up thread from hang. -Void mp_wakeup_thread(HAL::StackFramePtr stack); - -/// @brief makes thread sleep. -/// hooks and hangs thread to prevent code from executing. -Void mp_hang_thread(HAL::StackFramePtr stack); -} // namespace Kernel - -#endif // !__INC_MP_MANAGER_H__ -- cgit v1.2.3