summaryrefslogtreecommitdiffhomepage
path: root/dev/ZKAKit/HALKit/ARM64
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-11-07 15:43:23 +0100
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-11-07 15:43:23 +0100
commit3bb0b718b3fde156b6f30b7f05fa34a4937befaf (patch)
tree21933f8c8f203f9ed0fea0e000fa4c145efb5c84 /dev/ZKAKit/HALKit/ARM64
parentc80e1c993b1909266d73d1c0b5c798d640652382 (diff)
IMP: Improve SMP code for scheduler.
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/ZKAKit/HALKit/ARM64')
-rw-r--r--dev/ZKAKit/HALKit/ARM64/HalCoreMPScheduler.cc17
1 files changed, 13 insertions, 4 deletions
diff --git a/dev/ZKAKit/HALKit/ARM64/HalCoreMPScheduler.cc b/dev/ZKAKit/HALKit/ARM64/HalCoreMPScheduler.cc
index 29ca4c85..28d36c5a 100644
--- a/dev/ZKAKit/HALKit/ARM64/HalCoreMPScheduler.cc
+++ b/dev/ZKAKit/HALKit/ARM64/HalCoreMPScheduler.cc
@@ -9,11 +9,20 @@
using namespace Kernel;
-EXTERN_C Void mp_do_task_switch(VoidPtr image, UInt8* stack_ptr, HAL::StackFramePtr stack_frame);
+STATIC struct PROCESS_CONTROL_BLOCK final
+{
+ HAL::StackFramePtr f_Frame;
+ UInt8* f_Stack;
+ VoidPtr f_Image;
+} kProcessBlocks[kSchedProcessLimitPerTeam] = {0};
-EXTERN_C Bool mp_register_process(VoidPtr image, UInt8* stack_ptr, HAL::StackFramePtr stack_frame)
+EXTERN_C HAL::StackFramePtr mp_get_current_context(Void)
{
- mp_do_task_switch(image, stack_ptr, stack_frame);
+ return kProcessBlocks[UserProcessScheduler::The().GetCurrentProcess().Leak().ProcessId % kSchedProcessLimitPerTeam].f_Frame;
+}
- return Yes;
+EXTERN_C Bool mp_register_process(VoidPtr image, UInt8* stack_ptr, HAL::StackFramePtr stack_frame)
+{
+ MUST_PASS(image && stack_ptr && stack_frame);
+ return No;
}