diff options
Diffstat (limited to 'Private/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cpp')
| -rw-r--r-- | Private/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cpp | 105 |
1 files changed, 56 insertions, 49 deletions
diff --git a/Private/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cpp b/Private/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cpp index 288462ab..1b926814 100644 --- a/Private/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cpp +++ b/Private/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cpp @@ -10,85 +10,92 @@ /// @brief Handle GPF fault. /// @param rsp -EXTERN_C void idt_handle_gpf(NewOS::UIntPtr rsp) { - MUST_PASS(NewOS::ProcessScheduler::Shared().Leak().GetCurrent()); +EXTERN_C void idt_handle_gpf(NewOS::UIntPtr rsp) +{ + MUST_PASS(NewOS::ProcessScheduler::Shared().Leak().GetCurrent()); - NewOS::kcout << "New OS: Stack Pointer: " - << NewOS::StringBuilder::FromInt("rsp{%}", rsp); + NewOS::kcout << "New OS: Stack Pointer: " + << NewOS::StringBuilder::FromInt("rsp{%}", rsp); - NewOS::kcout - << "New OS: General Protection Fault, caused by " - << NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().GetName(); + NewOS::kcout + << "New OS: General Protection Fault, caused by " + << NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().GetName(); - NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().Crash(); + NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().Crash(); } /// @brief Handle the scheduler interrupt, raised from the HPET timer. /// @param rsp -EXTERN_C void idt_handle_scheduler(NewOS::UIntPtr rsp) { - NewOS::kcout << NewOS::StringBuilder::FromInt("rsp{%}", rsp); - - NewOS::kcout - << "New OS: Will be scheduled back later " - << NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().GetName() - << NewOS::end_line(); - - /// schedule another process. - if (!NewOS::ProcessHelper::StartScheduling()) { - NewOS::kcout << "New OS: Continue schedule this process...\r"; - } +EXTERN_C void idt_handle_scheduler(NewOS::UIntPtr rsp) +{ + NewOS::kcout << NewOS::StringBuilder::FromInt("rsp{%}", rsp); + + NewOS::kcout + << "New OS: Will be scheduled back later " + << NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().GetName() + << NewOS::end_line(); + + /// schedule another process. + if (!NewOS::ProcessHelper::StartScheduling()) + { + NewOS::kcout << "New OS: Continue schedule this process...\r"; + } } /// @brief Handle page fault. /// @param rsp -EXTERN_C void idt_handle_pf(NewOS::UIntPtr rsp) { - MUST_PASS(NewOS::ProcessScheduler::Shared().Leak().GetCurrent()); - NewOS::kcout << NewOS::StringBuilder::FromInt("rsp{%}", rsp); +EXTERN_C void idt_handle_pf(NewOS::UIntPtr rsp) +{ + MUST_PASS(NewOS::ProcessScheduler::Shared().Leak().GetCurrent()); + NewOS::kcout << NewOS::StringBuilder::FromInt("rsp{%}", rsp); - NewOS::kcout - << "New OS: Segmentation Fault, caused by " - << NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().GetName(); + NewOS::kcout + << "New OS: Segmentation Fault, caused by " + << NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().GetName(); - NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().Crash(); + NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().Crash(); } /// @brief Handle math fault. /// @param rsp -EXTERN_C void idt_handle_math(NewOS::UIntPtr rsp) { - MUST_PASS(NewOS::ProcessScheduler::Shared().Leak().GetCurrent()); - NewOS::kcout << NewOS::StringBuilder::FromInt("rsp{%}", rsp); +EXTERN_C void idt_handle_math(NewOS::UIntPtr rsp) +{ + MUST_PASS(NewOS::ProcessScheduler::Shared().Leak().GetCurrent()); + NewOS::kcout << NewOS::StringBuilder::FromInt("rsp{%}", rsp); - NewOS::kcout - << "New OS: Math error, caused by " - << NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().GetName(); + NewOS::kcout + << "New OS: Math error, caused by " + << NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().GetName(); - NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().Crash(); + NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().Crash(); } /// @brief Handle any generic fault. /// @param rsp -EXTERN_C void idt_handle_generic(NewOS::UIntPtr rsp) { - MUST_PASS(NewOS::ProcessScheduler::Shared().Leak().GetCurrent()); - NewOS::kcout << NewOS::StringBuilder::FromInt("sp{%}", rsp); +EXTERN_C void idt_handle_generic(NewOS::UIntPtr rsp) +{ + MUST_PASS(NewOS::ProcessScheduler::Shared().Leak().GetCurrent()); + NewOS::kcout << NewOS::StringBuilder::FromInt("sp{%}", rsp); - NewOS::kcout - << "New OS: Execution error, caused by " - << NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().GetName(); + NewOS::kcout + << "New OS: Execution error, caused by " + << NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().GetName(); - NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().Crash(); + NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().Crash(); } /// @brief Handle #UD fault. /// @param rsp -EXTERN_C void idt_handle_ud(NewOS::UIntPtr rsp) { - MUST_PASS(NewOS::ProcessScheduler::Shared().Leak().GetCurrent()); +EXTERN_C void idt_handle_ud(NewOS::UIntPtr rsp) +{ + MUST_PASS(NewOS::ProcessScheduler::Shared().Leak().GetCurrent()); - NewOS::kcout << "New OS: Stack Pointer: " - << NewOS::StringBuilder::FromInt("rsp{%}", rsp); + NewOS::kcout << "New OS: Stack Pointer: " + << NewOS::StringBuilder::FromInt("rsp{%}", rsp); - NewOS::kcout - << "New OS: Invalid interrupt, caused by " - << NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().GetName(); + NewOS::kcout + << "New OS: Invalid interrupt, caused by " + << NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().GetName(); - NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().Crash(); + NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().Crash(); } |
