From 35b6093dad9035a36af3171982b914a89335d452 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Sat, 20 Dec 2025 11:28:39 +0100 Subject: chore: kernel: apply vettable pattern to process structure. Signed-off-by: Amlal El Mahrouss --- src/kernel/HALKit/AMD64/HalKernelMain.cc | 7 +++---- src/kernel/KernelKit/KernelTaskScheduler.h | 7 ++++++- src/kernel/KernelKit/UserProcessScheduler.h | 9 +++++++-- src/kernel/NeKit/Vettable.h | 13 +++++-------- 4 files changed, 21 insertions(+), 15 deletions(-) (limited to 'src/kernel') diff --git a/src/kernel/HALKit/AMD64/HalKernelMain.cc b/src/kernel/HALKit/AMD64/HalKernelMain.cc index 7994a017..3a30bb04 100644 --- a/src/kernel/HALKit/AMD64/HalKernelMain.cc +++ b/src/kernel/HALKit/AMD64/HalKernelMain.cc @@ -17,14 +17,13 @@ #include #include #include -#include "NeKit/Config.h" #ifndef __NE_MODULAR_KERNEL_COMPONENTS__ EXTERN_C Kernel::VoidPtr kInterruptVectorTable[]; /// @brief Kernel init function. /// @param handover_hdr Handover boot header. -EXTERN_C Int32 hal_init_platform(Kernel::HEL::BootInfoHeader* handover_hdr) { +EXTERN_C Kernel::Int32 hal_init_platform(Kernel::HEL::BootInfoHeader* handover_hdr) { using namespace Kernel; if (handover_hdr->f_Magic != kHandoverMagic && handover_hdr->f_Version != kHandoverVersion) { @@ -146,12 +145,12 @@ EXTERN_C Kernel::Void hal_real_init(Kernel::Void) { UserProcessScheduler::The().SwitchTeam(kRTUserTeam); // AMLALE: TODO: Prosan, Process sanitizer. - rtl_create_user_process([]() -> void { while (YES); }, "Prosan"); + rtl_create_user_process([]() -> void { while (YES); }, "ProSan"); UserProcessScheduler::The().SwitchTeam(kMidUserTeam); // AMLALE: TODO, Vet sanitizer. - rtl_create_user_process([]() -> void { while (YES); }, "Vetsan"); + rtl_create_user_process([]() -> void { while (YES); }, "VetSan"); HAL::mp_init_cores(kHandoverHeader->f_HardwareTables.f_VendorPtr); diff --git a/src/kernel/KernelKit/KernelTaskScheduler.h b/src/kernel/KernelKit/KernelTaskScheduler.h index a7fd97e1..861ccbda 100644 --- a/src/kernel/KernelKit/KernelTaskScheduler.h +++ b/src/kernel/KernelKit/KernelTaskScheduler.h @@ -17,7 +17,7 @@ namespace Kernel { class KernelTaskHelper; -typedef ProcessID KID; +using KID = ProcessID; /// @brief Equivalent of UserProcess, but for kernel tasks. /// @author Amlal @@ -34,6 +34,11 @@ class KernelTask final { KID Kid{0}; }; +template <> +struct Vettable final { + static constexpr BOOL kValue = NO; +}; + /// @brief Equivalent of UserProcessHelper, but for kernel tasks. /// @author Amlal class KernelTaskHelper final { diff --git a/src/kernel/KernelKit/UserProcessScheduler.h b/src/kernel/KernelKit/UserProcessScheduler.h index 5cf0a447..56cd50e7 100644 --- a/src/kernel/KernelKit/UserProcessScheduler.h +++ b/src/kernel/KernelKit/UserProcessScheduler.h @@ -158,8 +158,13 @@ class UserProcess NE_VETTABLE { friend UserProcessHelper; }; -typedef Array UserProcessArray; -typedef Ref UserProcessRef; +template <> +struct Vettable final { + static constexpr BOOL kValue = YES; +}; + +using UserProcessArray = Array; +using UserProcessRef = Ref; /// \brief Processs Team (contains multiple processes inside it.) /// Equivalent to a process batch diff --git a/src/kernel/NeKit/Vettable.h b/src/kernel/NeKit/Vettable.h index d79aaa0b..8290b318 100644 --- a/src/kernel/NeKit/Vettable.h +++ b/src/kernel/NeKit/Vettable.h @@ -16,11 +16,6 @@ public \ ::Kernel::IVettable -#define NE_NOT_VETTABLE \ - final: \ - public \ - ::Kernel::INotVettable - namespace Kernel { struct IVettable { explicit IVettable() = default; @@ -31,12 +26,14 @@ struct IVettable { template struct Vettable final { - static constexpr bool kValue = false; + using ResultType = Type; + + static constexpr BOOL kValue = NO; }; template <> struct Vettable final { - static constexpr bool kValue = true; + static constexpr BOOL kValue = YES; }; template @@ -48,4 +45,4 @@ concept IsVettable = requires() { }; } // namespace Kernel -#endif // !__NE_KIT_VETTABLE_H__ \ No newline at end of file +#endif // !__NE_KIT_VETTABLE_H__ -- cgit v1.2.3