summaryrefslogtreecommitdiffhomepage
path: root/dev/ZKAKit/src/HardwareThreadScheduler.cc
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-11-07 16:30:10 +0100
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-11-07 16:30:10 +0100
commit516efdab62108ff03af7f1d91e6dcba02f6aad47 (patch)
tree5301fd170496f7562d0872c950cda0ec9d1f5db0 /dev/ZKAKit/src/HardwareThreadScheduler.cc
parent3bb0b718b3fde156b6f30b7f05fa34a4937befaf (diff)
Kernel: lots of fixes and improvements.
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/ZKAKit/src/HardwareThreadScheduler.cc')
-rw-r--r--dev/ZKAKit/src/HardwareThreadScheduler.cc10
1 files changed, 6 insertions, 4 deletions
diff --git a/dev/ZKAKit/src/HardwareThreadScheduler.cc b/dev/ZKAKit/src/HardwareThreadScheduler.cc
index 7651185d..48fcd5b4 100644
--- a/dev/ZKAKit/src/HardwareThreadScheduler.cc
+++ b/dev/ZKAKit/src/HardwareThreadScheduler.cc
@@ -90,13 +90,13 @@ namespace Kernel
/// @note Those symbols are needed in order to switch and validate the stack.
EXTERN Bool hal_check_stack(HAL::StackFramePtr frame_ptr);
- EXTERN_C Bool mp_register_process(VoidPtr image, Ptr8 stack_ptr, HAL::StackFramePtr frame_ptr);
+ EXTERN_C Bool mp_register_process(VoidPtr image, Ptr8 stack_ptr, HAL::StackFramePtr frame, ProcessID pid);
/// @brief Switch to hardware thread.
/// @param stack the new hardware thread.
/// @retval true stack was changed, code is running.
/// @retval false stack is invalid, previous code is running.
- Bool HardwareThread::Switch(VoidPtr image, Ptr8 stack_ptr, HAL::StackFramePtr frame)
+ Bool HardwareThread::Switch(VoidPtr image, Ptr8 stack_ptr, HAL::StackFramePtr frame, const ProcessID& pid)
{
if (!frame ||
!image ||
@@ -112,9 +112,11 @@ namespace Kernel
if (!hal_check_stack(frame))
return No;
- fStack = frame;
+ this->fStack = frame;
+ this->fSourcePID = pid;
- Bool ret = mp_register_process(image, stack_ptr, fStack);
+
+ Bool ret = mp_register_process(image, stack_ptr, fStack, this->fSourcePID);
if (ret)
this->Busy(true);