From b4211868747c71a33db1c74ef1717596e68afa43 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Mon, 17 Nov 2025 12:50:28 +0100 Subject: feat: guid: same macros names for GUIDWizard.cc Signed-off-by: Amlal El Mahrouss --- dev/kernel/src/GUIDWizard.cc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'dev/kernel') diff --git a/dev/kernel/src/GUIDWizard.cc b/dev/kernel/src/GUIDWizard.cc index 81bf3293..e4608497 100644 --- a/dev/kernel/src/GUIDWizard.cc +++ b/dev/kernel/src/GUIDWizard.cc @@ -13,9 +13,9 @@ #include // begin of ascii 'readable' characters. (A, C, C, 1, 2) -#define kUUIDAsciiBegin 47 +#define kGUIDAsciiBegin 47 // @brief Size of UUID. -#define kUUIDSize 37 +#define kGUIDSize 37 namespace Kernel::CF::XRN::Version1 { auto cf_make_sequence(const ArrayList& uuidSeq) -> Ref { @@ -44,18 +44,18 @@ auto cf_make_sequence(const ArrayList& uuidSeq) -> Ref { // @brief Tries to make a guid out of a string. // This function is not complete for now auto cf_try_guid_to_string(Ref& seq) -> ErrorOr> { - Char buf[kUUIDSize]; + Char buf[kGUIDSize]; for (SizeT index = 0; index < 16; ++index) { - buf[index] = seq.Leak()->fU8[index] + kUUIDAsciiBegin; + buf[index] = seq.Leak()->fU8[index] + kGUIDAsciiBegin; } for (SizeT index = 16; index < 24; ++index) { - buf[index] = seq.Leak()->fU16[index] + kUUIDAsciiBegin; + buf[index] = seq.Leak()->fU16[index] + kGUIDAsciiBegin; } for (SizeT index = 24; index < 28; ++index) { - buf[index] = seq.Leak()->fU32[index] + kUUIDAsciiBegin; + buf[index] = seq.Leak()->fU32[index] + kGUIDAsciiBegin; } auto view = KStringBuilder::Construct(buf); -- cgit v1.2.3 From 49ba8e9e7de4a1ca2f23dbcdac40e12b45b94e0d Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Mon, 17 Nov 2025 16:11:54 +0100 Subject: feat: kernel: implement 'rtl_create_kernel_task' Signed-off-by: Amlal El Mahrouss --- dev/kernel/KernelKit/CodeMgr.h | 2 +- dev/kernel/KernelKit/KernelTaskScheduler.h | 3 ++- dev/kernel/src/CodeMgr.cc | 12 +++++++++++- 3 files changed, 14 insertions(+), 3 deletions(-) (limited to 'dev/kernel') diff --git a/dev/kernel/KernelKit/CodeMgr.h b/dev/kernel/KernelKit/CodeMgr.h index 2569b064..70e977e9 100644 --- a/dev/kernel/KernelKit/CodeMgr.h +++ b/dev/kernel/KernelKit/CodeMgr.h @@ -38,7 +38,7 @@ typedef void (*rtl_cxx_dtor_kind)(void); /// accessible. /// @param main the start of the process. /// @return The team's process id. -ProcessID rtl_create_kernel_process(rtl_main_kind main, const Char* task_name) noexcept; +BOOL rtl_create_kernel_task(HAL::StackFramePtr main, const KID kid) noexcept; /// @brief Executes a new process from a function. User code only. /// @note This sets up a new stack, anything on the main function that calls the Kernel will not be diff --git a/dev/kernel/KernelKit/KernelTaskScheduler.h b/dev/kernel/KernelKit/KernelTaskScheduler.h index 6fd626b4..e92a91b7 100644 --- a/dev/kernel/KernelKit/KernelTaskScheduler.h +++ b/dev/kernel/KernelKit/KernelTaskScheduler.h @@ -38,7 +38,8 @@ class KERNEL_TASK final { /// @author Amlal class KernelTaskHelper final { public: - STATIC Bool Switch(HAL::StackFramePtr frame_ptr, ProcessID new_kid); + STATIC Bool Add(HAL::StackFramePtr frame_ptr, ProcessID new_kid); + STATIC Bool Remove(const KID kid); STATIC Bool CanBeScheduled(const KERNEL_TASK& process); STATIC ErrorOr TheCurrentKID(); STATIC SizeT StartScheduling(); diff --git a/dev/kernel/src/CodeMgr.cc b/dev/kernel/src/CodeMgr.cc index 7f85d547..02ed4c62 100644 --- a/dev/kernel/src/CodeMgr.cc +++ b/dev/kernel/src/CodeMgr.cc @@ -9,6 +9,17 @@ #include namespace Kernel { + +/// @brief Executes a new process from a function. Kernel code only. +/// @note This sets up a new stack, anything on the main function that calls the Kernel will not be +/// accessible. +/// @param main the start of the process. +/// @return The team's process id. +BOOL rtl_create_kernel_task(HAL::StackFramePtr task, const KID kid) noexcept { + if (!kid || task == nullptr) return FALSE; + return KernelTaskHelper::Add(task, kid); +} + /***********************************************************************************/ /// @brief Executes a new process from a function. Kernel code only. /// @note This sets up a new stack, anything on the main function that calls the Kernel will not be @@ -19,7 +30,6 @@ namespace Kernel { ProcessID rtl_create_user_process(rtl_main_kind main, const Char* process_name) noexcept { if (!process_name || *process_name == 0) return kSchedInvalidPID; - return UserProcessScheduler::The().Spawn(process_name, reinterpret_cast(main), nullptr); } } // namespace Kernel -- cgit v1.2.3 From c9f77e01e9940fae5d0a47ad81183d110d34fcaf Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Mon, 17 Nov 2025 16:14:15 +0100 Subject: feat: kernel: implement 'rtl_create_kernel_task' Signed-off-by: Amlal El Mahrouss --- dev/kernel/src/KernelTaskScheduler.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'dev/kernel') diff --git a/dev/kernel/src/KernelTaskScheduler.cc b/dev/kernel/src/KernelTaskScheduler.cc index b6cea3bc..bee4003d 100644 --- a/dev/kernel/src/KernelTaskScheduler.cc +++ b/dev/kernel/src/KernelTaskScheduler.cc @@ -18,7 +18,7 @@ namespace Kernel { EXTERN_C Void hal_switch_kernel_task(HAL::StackFramePtr frame, ProcessID kid); -Bool KernelTaskHelper::Switch(HAL::StackFramePtr frame_ptr, ProcessID new_kid) { +Bool KernelTaskHelper::Add(HAL::StackFramePtr frame_ptr, ProcessID new_kid) { NE_UNUSED(frame_ptr); NE_UNUSED(new_kid); -- cgit v1.2.3 From 00b182203540d6632f87700aad501faccbf2394d Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Mon, 17 Nov 2025 16:18:03 +0100 Subject: feat: kernel: implement skeleton of Remove function of KernelTaskHelper. Signed-off-by: Amlal El Mahrouss --- dev/kernel/src/KernelTaskScheduler.cc | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'dev/kernel') diff --git a/dev/kernel/src/KernelTaskScheduler.cc b/dev/kernel/src/KernelTaskScheduler.cc index bee4003d..0f21ecdd 100644 --- a/dev/kernel/src/KernelTaskScheduler.cc +++ b/dev/kernel/src/KernelTaskScheduler.cc @@ -16,15 +16,21 @@ /***********************************************************************************/ namespace Kernel { -EXTERN_C Void hal_switch_kernel_task(HAL::StackFramePtr frame, ProcessID kid); +EXTERN_C Void hal_switch_kernel_task(HAL::StackFramePtr frame, KID kid); -Bool KernelTaskHelper::Add(HAL::StackFramePtr frame_ptr, ProcessID new_kid) { +Bool KernelTaskHelper::Add(HAL::StackFramePtr frame_ptr, KID new_kid) { NE_UNUSED(frame_ptr); NE_UNUSED(new_kid); return NO; } +Bool KernelTaskHelper::Remove(const KID kid) { + NE_UNUSED(kid); + + return NO; +} + Bool KernelTaskHelper::CanBeScheduled(const KERNEL_TASK& task) { return task.Kid > 0 && task.Image.HasCode(); } -- cgit v1.2.3