diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-05-18 20:00:25 +0200 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal@nekernel.org> | 2025-05-18 20:00:25 +0200 |
| commit | ce71265ae5bd333c309dff8c2d46e4d52dd78066 (patch) | |
| tree | 0154d9c9aa7bd583d86e9a3a8151c8339fad5f46 /dev/kernel/HALKit | |
| parent | 0266d8058990a496b935abd76417abcfe4e9cffd (diff) | |
feat(sched_desgin): better architecture for the HTS.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'dev/kernel/HALKit')
| -rw-r--r-- | dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc | 20 | ||||
| -rw-r--r-- | dev/kernel/HALKit/AMD64/HalKernelMain.cc | 24 | ||||
| -rw-r--r-- | dev/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc | 1 |
3 files changed, 23 insertions, 22 deletions
diff --git a/dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc b/dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc index 89fe00b5..b12dc7fe 100644 --- a/dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc +++ b/dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc @@ -44,6 +44,8 @@ /////////////////////////////////////////////////////////////////////////////////////// namespace Kernel::HAL { +EXTERN_C Void sched_jump_to_task(HAL::StackFramePtr stack_frame); + struct HAL_APIC_MADT; struct HAL_HARDWARE_THREAD; @@ -59,9 +61,9 @@ STATIC Int64 kSMPCount = 0; EXTERN_C UIntPtr kApicBaseAddress; -STATIC Int32 kSMPInterrupt = 0; -STATIC UInt64 kAPICLocales[kSchedProcessLimitPerTeam] = {0}; -STATIC VoidPtr kRawMADT = nullptr; +STATIC Int32 kSMPInterrupt = 0; +STATIC UInt64 kAPICLocales[kMaxAPInsideSched] = {0}; +STATIC VoidPtr kRawMADT = nullptr; /// @brief Multiple APIC Descriptor Table. struct HAL_APIC_MADT final SDT_OBJECT { @@ -105,17 +107,11 @@ EXTERN_C HAL::StackFramePtr mp_get_current_context(Int64 pid) { } EXTERN_C BOOL mp_register_process(HAL::StackFramePtr stack_frame, ProcessID pid) { - MUST_PASS(stack_frame); - - const auto process_index = pid % kSchedProcessLimitPerTeam; - - kHWThread[process_index].mFramePtr = stack_frame; - kHWThread[process_index].mProcessID = pid; - - kHWThread[process_index].mCoreID = kAPICLocales[0]; + if (pid > kSMPCount) return NO; if (mp_is_smp()) { - /// TODO: + kHWThread[pid].mFramePtr = stack_frame; + kHWThread[pid].mProcessID = pid; return YES; } diff --git a/dev/kernel/HALKit/AMD64/HalKernelMain.cc b/dev/kernel/HALKit/AMD64/HalKernelMain.cc index f4585835..6020da3b 100644 --- a/dev/kernel/HALKit/AMD64/HalKernelMain.cc +++ b/dev/kernel/HALKit/AMD64/HalKernelMain.cc @@ -104,28 +104,34 @@ EXTERN_C Int32 hal_init_platform(Kernel::HEL::BootInfoHeader* handover_hdr) { } EXTERN_C Kernel::Void hal_real_init(Kernel::Void) noexcept { - Kernel::rtl_create_user_process(sched_idle_task, "MgmtSrv"); //! Mgmt command server. - Kernel::rtl_create_user_process(sched_idle_task, "LaunchSrv"); //! launchd - Kernel::rtl_create_user_process(sched_idle_task, "SecSrv"); //! Login Server + using namespace Kernel; - Kernel::HAL::mp_init_cores(kHandoverHeader->f_HardwareTables.f_VendorPtr); + for (SizeT index = 0UL; index < HardwareThreadScheduler::The().Capacity(); ++index) { + HardwareThreadScheduler::The()[index].Leak()->Kind() = ThreadKind::kAPStandard; + } + + rtl_create_user_process(sched_idle_task, "MgmtSrv"); //! Mgmt command server. + rtl_create_user_process(sched_idle_task, "LaunchSrv"); //! launchd + rtl_create_user_process(sched_idle_task, "SecSrv"); //! Login Server + + HAL::mp_init_cores(kHandoverHeader->f_HardwareTables.f_VendorPtr); #ifdef __FSKIT_INCLUDES_HEFS__ - if (Kernel::HeFS::fs_init_hefs()) { + if (HeFS::fs_init_hefs()) { goto hal_spin_kernel; } #endif - if (!Kernel::NeFS::fs_init_nefs()) { + if (!NeFS::fs_init_nefs()) { kout << "NeFS cannot be formated on the disk. Aborting\r"; dbg_break_point(); } hal_spin_kernel: - Kernel::HAL::Register64 idt_reg; - idt_reg.Base = reinterpret_cast<Kernel::UIntPtr>(kInterruptVectorTable); + HAL::Register64 idt_reg; + idt_reg.Base = reinterpret_cast<UIntPtr>(kInterruptVectorTable); - Kernel::HAL::IDTLoader idt_loader; + HAL::IDTLoader idt_loader; idt_loader.Load(idt_reg); diff --git a/dev/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc b/dev/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc index 57e77e77..246c2e02 100644 --- a/dev/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc +++ b/dev/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc @@ -54,7 +54,6 @@ using namespace Kernel; -STATIC HardwareTimer kSATATimer(rtl_milliseconds(5)); STATIC PCI::Device kSATADev; STATIC HbaMemRef kSATAHba; STATIC Lba kSATASectorCount = 0UL; |
