summaryrefslogtreecommitdiffhomepage
path: root/dev/Kernel/HALKit/AMD64/HalKernelMain.cc
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2025-01-06 14:52:09 +0100
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2025-01-06 14:53:26 +0100
commit8c179d8801df7f5f77fe7ec65a0a98b7901dad09 (patch)
tree788ccdfd9e56e1b0402cc7b4b1af7d792888fd68 /dev/Kernel/HALKit/AMD64/HalKernelMain.cc
parente0633b442140d49e08af6759bd07c89e16ef0e2a (diff)
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 <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/Kernel/HALKit/AMD64/HalKernelMain.cc')
-rw-r--r--dev/Kernel/HALKit/AMD64/HalKernelMain.cc24
1 files changed, 22 insertions, 2 deletions
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;