summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-06-01 11:00:57 +0200
committerAmlal El Mahrouss <amlal@nekernel.org>2025-06-01 11:00:57 +0200
commitfc0e8401c905171cbc5659065052c3ca9db89cc2 (patch)
treee33401c6467d53005d16989b207f5a1e2f4c6509
parent2c881c520384bf266539afb83de57c09df9ddf87 (diff)
feat: Be more flexible when the OS is not SMP-aware.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
-rw-r--r--dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc4
-rw-r--r--dev/kernel/src/HardwareThreadScheduler.cc2
-rw-r--r--dev/kernel/src/UserProcessScheduler.cc2
3 files changed, 5 insertions, 3 deletions
diff --git a/dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc b/dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc
index 5bdfd863..24a81af9 100644
--- a/dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc
+++ b/dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc
@@ -120,7 +120,9 @@ EXTERN_C BOOL mp_register_task(HAL::StackFramePtr stack_frame, ThreadID thrdid)
HardwareThreadScheduler::The()[thrdid].Leak()->Busy(NO);
- sched_jump_to_task(kHWThread[thrdid].mFramePtr);
+ if (!kSMPAware) {
+ sched_jump_to_task(kHWThread[thrdid].mFramePtr);
+ }
return YES;
}
diff --git a/dev/kernel/src/HardwareThreadScheduler.cc b/dev/kernel/src/HardwareThreadScheduler.cc
index e3255326..86f46718 100644
--- a/dev/kernel/src/HardwareThreadScheduler.cc
+++ b/dev/kernel/src/HardwareThreadScheduler.cc
@@ -145,7 +145,7 @@ HAL::StackFramePtr HardwareThreadScheduler::Leak() noexcept {
*/
/***********************************************************************************/
Ref<HardwareThread*> HardwareThreadScheduler::operator[](SizeT idx) {
- if (idx >= kMaxAPInsideSched) {
+ if (idx > kMaxAPInsideSched) {
HardwareThread* kFakeThread = nullptr;
return {kFakeThread};
}
diff --git a/dev/kernel/src/UserProcessScheduler.cc b/dev/kernel/src/UserProcessScheduler.cc
index f76d4821..e417cc8d 100644
--- a/dev/kernel/src/UserProcessScheduler.cc
+++ b/dev/kernel/src/UserProcessScheduler.cc
@@ -444,7 +444,7 @@ UserProcessScheduler& UserProcessScheduler::The() {
/***********************************************************************************/
Void UserProcessScheduler::Remove(ProcessID process_id) {
- if (process_id < 0 || process_id >= kSchedProcessLimitPerTeam) {
+ if (process_id < 0 || process_id > kSchedProcessLimitPerTeam) {
return;
}