diff options
Diffstat (limited to 'dev/Kernel/src')
| -rw-r--r-- | dev/Kernel/src/HardwareThreadScheduler.cc | 9 | ||||
| -rw-r--r-- | dev/Kernel/src/UserProcessScheduler.cc | 8 |
2 files changed, 10 insertions, 7 deletions
diff --git a/dev/Kernel/src/HardwareThreadScheduler.cc b/dev/Kernel/src/HardwareThreadScheduler.cc index a94ad64c..0e9a2865 100644 --- a/dev/Kernel/src/HardwareThreadScheduler.cc +++ b/dev/Kernel/src/HardwareThreadScheduler.cc @@ -22,7 +22,7 @@ namespace Kernel /***********************************************************************************/ EXTERN Bool hal_check_stack(HAL::StackFramePtr frame_ptr); - EXTERN_C Bool mp_register_process(VoidPtr image, Ptr8 stack_ptr, HAL::StackFramePtr frame, ProcessID pid); + EXTERN_C Bool mp_register_process(HAL::StackFramePtr frame, ProcessID pid); STATIC HardwareThreadScheduler kHardwareThreadScheduler; @@ -109,12 +109,15 @@ namespace Kernel /// @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, const ThreadID& pid) + Bool HardwareThread::Switch(VoidPtr image_ptr, Ptr8 stack_ptr, HAL::StackFramePtr frame, const ThreadID& pid) { this->fStack = frame; this->fSourcePID = pid; - Bool ret = mp_register_process(image, stack_ptr, fStack, this->fSourcePID); + fStack->BP = reinterpret_cast<UIntPtr>(image_ptr); + fStack->SP = reinterpret_cast<UIntPtr>(stack_ptr); + + Bool ret = mp_register_process(fStack, this->fSourcePID); if (ret) this->Busy(YES); diff --git a/dev/Kernel/src/UserProcessScheduler.cc b/dev/Kernel/src/UserProcessScheduler.cc index 2d3101f2..f21e90d9 100644 --- a/dev/Kernel/src/UserProcessScheduler.cc +++ b/dev/Kernel/src/UserProcessScheduler.cc @@ -330,7 +330,7 @@ namespace Kernel #endif // __ZKA_VIRTUAL_MEMORY_SUPPORT__ // React according to process kind. - switch (process.kind) + switch (process.Kind) { case UserThread::kExectuableDylibKind: { @@ -439,9 +439,9 @@ namespace Kernel for (; process_index < mTeam.AsArray().Capacity(); ++process_index) { - auto process = mTeam.AsArray()[process_index]; + auto& process = mTeam.AsArray()[process_index]; - //! check if process needs to be scheduled. + //! check if the process needs to be run. if (UserProcessHelper::CanBeScheduled(process)) { // Set current process header. @@ -455,7 +455,7 @@ namespace Kernel if (!UserProcessHelper::Switch(process.Image.fCode, &process.StackReserve[process.StackSize - 1], process.StackFrame, process.ProcessId)) { - kcout << "Invalid process.\r"; + kcout << "Invalid process (UH OH)\r"; process.Crash(); } } |
