From 8c179d8801df7f5f77fe7ec65a0a98b7901dad09 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Mon, 6 Jan 2025 14:52:09 +0100 Subject: KAN-11: Half-done on AMD64, not yet started on ARM64. KAN-12: Found GPF issue on DriveMgr, working on it. ADD: Improvement of the BootThread class. Signed-off-by: Amlal El Mahrouss --- dev/Kernel/HALKit/AMD64/HalKernelMain.cc | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) (limited to 'dev/Kernel/HALKit/AMD64/HalKernelMain.cc') diff --git a/dev/Kernel/HALKit/AMD64/HalKernelMain.cc b/dev/Kernel/HALKit/AMD64/HalKernelMain.cc index b6ac0f3b..16571373 100644 --- a/dev/Kernel/HALKit/AMD64/HalKernelMain.cc +++ b/dev/Kernel/HALKit/AMD64/HalKernelMain.cc @@ -93,8 +93,28 @@ EXTERN_C Kernel::Void hal_real_init(Kernel::Void) noexcept { rtl_kernel_main(0, nullptr, nullptr, 0); - if (kHandoverHeader->f_HardwareTables.f_MultiProcessingEnabled) - Kernel::HAL::mp_get_cores(kHandoverHeader->f_HardwareTables.f_VendorPtr); + auto id = Kernel::rtl_create_process([] (const Kernel::SizeT argc, Kernel::Char** argv, Kernel::Char** envp, const Kernel::SizeT envp_len) -> void { + while (YES); + }, "SMP Process #1"); + + Kernel::UserProcessScheduler::The().CurrentTeam().mProcessList[id].PTime = 0; + Kernel::UserProcessScheduler::The().CurrentTeam().mProcessList[id].Status = Kernel::ProcessStatusKind::kRunning; + + id = Kernel::rtl_create_process([] (const Kernel::SizeT argc, Kernel::Char** argv, Kernel::Char** envp, const Kernel::SizeT envp_len) -> void { + while (YES); + }, "SMP Process #2"); + + Kernel::UserProcessScheduler::The().CurrentTeam().mProcessList[id].PTime = 0; + Kernel::UserProcessScheduler::The().CurrentTeam().mProcessList[id].Status = Kernel::ProcessStatusKind::kRunning; + + id = Kernel::rtl_create_process([] (const Kernel::SizeT argc, Kernel::Char** argv, Kernel::Char** envp, const Kernel::SizeT envp_len) -> void { + while (YES); + }, "SMP Process #3"); + + Kernel::UserProcessScheduler::The().CurrentTeam().mProcessList[id].PTime = 0; + Kernel::UserProcessScheduler::The().CurrentTeam().mProcessList[id].Status = Kernel::ProcessStatusKind::kRunning; + + Kernel::HAL::mp_get_cores(kHandoverHeader->f_HardwareTables.f_VendorPtr); Kernel::HAL::Register64 idt_reg; idt_reg.Base = (Kernel::UIntPtr)kInterruptVectorTable; -- cgit v1.2.3