From 8d6975f2ec360f696ac40ea703033fc9217227b6 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Sat, 7 Dec 2024 15:37:46 +0100 Subject: FIXING: The next set of patches. Signed-off-by: Amlal El Mahrouss --- dev/ZKAKit/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc | 16 ++++++++++++++++ dev/ZKAKit/HALKit/AMD64/HalKernelMain.cc | 4 ++-- dev/ZKAKit/HALKit/ARM64/HalKernelMain.cc | 4 +++- 3 files changed, 21 insertions(+), 3 deletions(-) (limited to 'dev') diff --git a/dev/ZKAKit/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc b/dev/ZKAKit/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc index db400e02..80da073d 100644 --- a/dev/ZKAKit/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc +++ b/dev/ZKAKit/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc @@ -56,8 +56,24 @@ EXTERN_C void idt_handle_pf(Kernel::UIntPtr rsp) /// @brief Handle scheduler interrupt. EXTERN_C void idt_handle_scheduler(Kernel::UIntPtr rsp) { + static BOOL is_scheduling = NO; + static Kernel::Int64 try_count_before_brute = 100000UL; + + while (is_scheduling) + { + --try_count_before_brute; + + if (try_count_before_brute < 1) + break; + } + + try_count_before_brute = 100000UL; + is_scheduling = YES; + kcout << "Kernel: Timer IRQ (Scheduler Notification).\r"; Kernel::UserProcessHelper::StartScheduling(); + + is_scheduling = NO; } /// @brief Handle math fault. diff --git a/dev/ZKAKit/HALKit/AMD64/HalKernelMain.cc b/dev/ZKAKit/HALKit/AMD64/HalKernelMain.cc index d44dd502..401e25ed 100644 --- a/dev/ZKAKit/HALKit/AMD64/HalKernelMain.cc +++ b/dev/ZKAKit/HALKit/AMD64/HalKernelMain.cc @@ -94,10 +94,10 @@ EXTERN_C Kernel::Void hal_real_init(Kernel::Void) noexcept Kernel::HAL::Register64 idt_reg; idt_reg.Base = (Kernel::UIntPtr)kInterruptVectorTable; + Kernel::rtl_create_process(ke_dll_entrypoint, "Kernel System"); + Kernel::HAL::IDTLoader idt_loader; idt_loader.Load(idt_reg); - ke_dll_entrypoint(); - Kernel::ke_stop(RUNTIME_CHECK_BOOTSTRAP); } diff --git a/dev/ZKAKit/HALKit/ARM64/HalKernelMain.cc b/dev/ZKAKit/HALKit/ARM64/HalKernelMain.cc index f10f2948..58c44e58 100644 --- a/dev/ZKAKit/HALKit/ARM64/HalKernelMain.cc +++ b/dev/ZKAKit/HALKit/ARM64/HalKernelMain.cc @@ -44,7 +44,9 @@ EXTERN_C void hal_init_platform( kKernelBitMpStart = reinterpret_cast( reinterpret_cast(kHandoverHeader->f_BitMapStart)); - ke_dll_entrypoint(); + /// @note do initialize the interrupts after it. + + Kernel::rtl_create_process(ke_dll_entrypoint, "Kernel System"); Kernel::ke_stop(RUNTIME_CHECK_BOOTSTRAP); } -- cgit v1.2.3