summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-05-15 19:43:08 +0200
committerAmlal El Mahrouss <amlal@nekernel.org>2025-05-15 19:43:08 +0200
commit19ba024998c64583116423ed61abd1eade0bf2ec (patch)
tree99804e985af31dfb4c5d33d138db5f76f0d1fa17
parentd126ebf73370fbc64913aa6ff19db56a39f625b2 (diff)
feat(kernel): improved scheduler and kernel main code.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
-rw-r--r--dev/kernel/HALKit/AMD64/HalKernelMain.cc9
-rw-r--r--dev/kernel/src/UserProcessScheduler.cc5
2 files changed, 6 insertions, 8 deletions
diff --git a/dev/kernel/HALKit/AMD64/HalKernelMain.cc b/dev/kernel/HALKit/AMD64/HalKernelMain.cc
index a535b4ac..722c9cb5 100644
--- a/dev/kernel/HALKit/AMD64/HalKernelMain.cc
+++ b/dev/kernel/HALKit/AMD64/HalKernelMain.cc
@@ -120,17 +120,16 @@ EXTERN_C Kernel::Void hal_real_init(Kernel::Void) noexcept {
Kernel::HAL::mp_init_cores(kHandoverHeader->f_HardwareTables.f_VendorPtr);
#ifdef __FSKIT_INCLUDES_HEFS__
- if (!Kernel::HeFS::fs_init_hefs()) {
- // Fallback to NeFS, if HeFS doesn't work here.
- Kernel::NeFS::fs_init_nefs();
+ if (Kernel::HeFS::fs_init_hefs()) {
+ goto hal_spin_kernel;
}
-#elif defined(__FSKIT_INCLUDES_NEFS__)
+#endif
if (!Kernel::NeFS::fs_init_nefs()) {
kout << "NeFS cannot be formated on the disk. Aborting\r";
dbg_break_point();
}
-#endif
+hal_spin_kernel:
while (YES)
;
}
diff --git a/dev/kernel/src/UserProcessScheduler.cc b/dev/kernel/src/UserProcessScheduler.cc
index 54f8ca77..1a208bae 100644
--- a/dev/kernel/src/UserProcessScheduler.cc
+++ b/dev/kernel/src/UserProcessScheduler.cc
@@ -495,9 +495,6 @@ SizeT UserProcessScheduler::Run() noexcept {
this->CurrentProcess() = process;
- process.PTime = static_cast<Int32>(process.Affinity);
- process.RTime = 0UL;
-
// tell helper to find a core to schedule on, otherwise run on this core directly.
if (!UserProcessHelper::Switch(process.StackFrame, process.ProcessId)) {
if (process.ProcessId == this->CurrentProcess().Leak().ProcessId &&
@@ -510,7 +507,9 @@ SizeT UserProcessScheduler::Run() noexcept {
else if (process.RTime < (Int32) AffinityKind::kStandard)
process.PTime = (Int32) AffinityKind::kHigh;
+ process.PTime = static_cast<Int32>(process.Affinity);
process.RTime = 0UL;
+
} else {
++process.RTime;
}