summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-11-25 10:25:30 -0500
committerAmlal El Mahrouss <amlal@nekernel.org>2025-11-25 10:25:30 -0500
commitcdfc807e90c713a3c7e6698c8b255b4523b8d311 (patch)
tree8b1ec0306ca45cadaf86917897b03355c436fc5c
parent83d870e58457a1d335a1d9b9966a6a1887cc297b (diff)
kernel: feat{HAL, src} SMP and HwrdSched improvements, HeapMgr patches.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
-rw-r--r--src/kernel/HALKit/AMD64/HalApplicationProcessor.cc4
-rw-r--r--src/kernel/src/HardwareThreadScheduler.cc2
-rw-r--r--src/kernel/src/HeapMgr.cc5
-rw-r--r--src/kernel/src/IDylibObject.cc1
4 files changed, 6 insertions, 6 deletions
diff --git a/src/kernel/HALKit/AMD64/HalApplicationProcessor.cc b/src/kernel/HALKit/AMD64/HalApplicationProcessor.cc
index 5a530457..02d7f885 100644
--- a/src/kernel/HALKit/AMD64/HalApplicationProcessor.cc
+++ b/src/kernel/HALKit/AMD64/HalApplicationProcessor.cc
@@ -117,13 +117,13 @@ EXTERN_C BOOL mp_register_task(HAL::StackFramePtr stack_frame, ThreadID thrdid)
if (!stack_frame) return NO;
if (!kSMPAware) {
- sched_jump_to_task(kHWThread[thrdid].mFramePtr);
+ sched_jump_to_task(stack_frame);
return YES;
}
if (thrdid > kSMPCount) return NO;
- HardwareThreadScheduler::The()[thrdid].Leak()->Busy(NO);
+ kHWThread[thrdid].mThreadID = thrdid;
kHWThread[thrdid].mFramePtr = stack_frame;
return YES;
diff --git a/src/kernel/src/HardwareThreadScheduler.cc b/src/kernel/src/HardwareThreadScheduler.cc
index 41d927f6..577659ba 100644
--- a/src/kernel/src/HardwareThreadScheduler.cc
+++ b/src/kernel/src/HardwareThreadScheduler.cc
@@ -146,7 +146,7 @@ HAL::StackFramePtr HardwareThreadScheduler::Leak() noexcept {
/***********************************************************************************/
Ref<HardwareThread*> HardwareThreadScheduler::operator[](SizeT idx) {
if (idx > kMaxAPInsideSched) {
- HardwareThread* kFakeThread = nullptr;
+ static HardwareThread* kFakeThread = nullptr;
return {kFakeThread};
}
diff --git a/src/kernel/src/HeapMgr.cc b/src/kernel/src/HeapMgr.cc
index 848a0377..be252b22 100644
--- a/src/kernel/src/HeapMgr.cc
+++ b/src/kernel/src/HeapMgr.cc
@@ -246,10 +246,11 @@ _Output Boolean mm_protect_ptr(VoidPtr heap_ptr) {
reinterpret_cast<Detail::MM_INFORMATION_BLOCK_PTR>((UIntPtr) heap_ptr -
sizeof(Detail::MM_INFORMATION_BLOCK));
- /// if valid, present and is heap header, then compute crc32
+ /// AMLALE: if valid, present and is heap header, then compute crc32
if (heap_info_ptr && heap_info_ptr->fPresent && kHeapMgrMagic == heap_info_ptr->fMagic) {
+ /// AMLALE: Protect only the header, information in it may change.
heap_info_ptr->fCRC32 =
- ke_calculate_crc32((Char*) heap_info_ptr->fOffset, heap_info_ptr->fSize);
+ ke_calculate_crc32((Char*) heap_info_ptr, sizeof(Detail::MM_INFORMATION_BLOCK));
return Yes;
}
diff --git a/src/kernel/src/IDylibObject.cc b/src/kernel/src/IDylibObject.cc
index 61191af1..97aec28f 100644
--- a/src/kernel/src/IDylibObject.cc
+++ b/src/kernel/src/IDylibObject.cc
@@ -10,4 +10,3 @@
#include <KernelKit/DebugOutput.h>
#include <KernelKit/IDylibObject.h>
-using namespace Kernel;