summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-12-20 11:28:39 +0100
committerAmlal El Mahrouss <amlal@nekernel.org>2025-12-20 11:28:39 +0100
commit35b6093dad9035a36af3171982b914a89335d452 (patch)
tree1b6e847e8efffe04c9f741b2ab06f15e4e4d3987
parentd0fb2f563bf93917d31e5c589a3896fe17e21993 (diff)
chore: kernel: apply vettable pattern to process structure.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
-rw-r--r--src/kernel/HALKit/AMD64/HalKernelMain.cc7
-rw-r--r--src/kernel/KernelKit/KernelTaskScheduler.h7
-rw-r--r--src/kernel/KernelKit/UserProcessScheduler.h9
-rw-r--r--src/kernel/NeKit/Vettable.h13
4 files changed, 21 insertions, 15 deletions
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 <misc/BenchKit/HWChronometer.h>
#include <modules/ACPI/ACPIFactoryInterface.h>
#include <modules/CoreGfx/TextGfx.h>
-#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<KernelTask> 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<UserProcess, kSchedProcessLimitPerTeam> UserProcessArray;
-typedef Ref<UserProcess> UserProcessRef;
+template <>
+struct Vettable<UserProcess> final {
+ static constexpr BOOL kValue = YES;
+};
+
+using UserProcessArray = Array<UserProcess, kSchedProcessLimitPerTeam>;
+using UserProcessRef = Ref<UserProcess>;
/// \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 <class Type>
struct Vettable final {
- static constexpr bool kValue = false;
+ using ResultType = Type;
+
+ static constexpr BOOL kValue = NO;
};
template <>
struct Vettable<IVettable> final {
- static constexpr bool kValue = true;
+ static constexpr BOOL kValue = YES;
};
template <class Type>
@@ -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__