summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/HALKit
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-05-18 20:00:25 +0200
committerAmlal El Mahrouss <amlal@nekernel.org>2025-05-18 20:00:25 +0200
commitce71265ae5bd333c309dff8c2d46e4d52dd78066 (patch)
tree0154d9c9aa7bd583d86e9a3a8151c8339fad5f46 /dev/kernel/HALKit
parent0266d8058990a496b935abd76417abcfe4e9cffd (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.cc20
-rw-r--r--dev/kernel/HALKit/AMD64/HalKernelMain.cc24
-rw-r--r--dev/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc1
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;