diff options
| author | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-11-07 15:43:23 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-11-07 15:43:23 +0100 |
| commit | 3bb0b718b3fde156b6f30b7f05fa34a4937befaf (patch) | |
| tree | 21933f8c8f203f9ed0fea0e000fa4c145efb5c84 /dev/ZKAKit/HALKit/ARM64 | |
| parent | c80e1c993b1909266d73d1c0b5c798d640652382 (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.cc | 17 |
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; } |
