diff options
| author | Amlal <amlalelmahrouss@icloud.com> | 2024-12-07 11:45:47 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-12-07 15:30:32 +0100 |
| commit | 829821e56b88a2aa825265f5c3ca9c97a8c1e961 (patch) | |
| tree | 1f9844bf3afef9480e368c52e17c9df562ff894f /dev | |
| parent | dc2d81f3c7628433bd3c51f1624200b3913ac746 (diff) | |
Fix Readme SSH link.
Ammend (Error): Fixing #8 issue currently (WiP)
Signed-off-by: Amlal <amlalelmahrouss@icloud.com>
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev')
| -rw-r--r-- | dev/ZKAKit/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc | 25 | ||||
| -rw-r--r-- | dev/ZKAKit/amd64-efi.make | 2 | ||||
| -rw-r--r-- | dev/ZKAKit/src/UserProcessScheduler.cc | 3 |
3 files changed, 28 insertions, 2 deletions
diff --git a/dev/ZKAKit/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc b/dev/ZKAKit/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc index 1fb0cfce..db400e02 100644 --- a/dev/ZKAKit/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc +++ b/dev/ZKAKit/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cc @@ -14,7 +14,20 @@ EXTERN_C void idt_handle_gpf(Kernel::UIntPtr rsp) { kcout << "Kernel: GPF.\r"; - Kernel::UserProcessScheduler::The().GetCurrentProcess().Leak().Crash(); + + auto process = Kernel::UserProcessScheduler::The().GetCurrentProcess(); + + process.Leak().ProcessSignal.SignalIP = 0UL; + process.Leak().ProcessSignal.SignalID = SIGKILL; + process.Leak().ProcessSignal.PreviousStatus = process.Leak().Status; + + kcout << "Kernel: PRCFROZE status set..\r"; + + process.Leak().Status = Kernel::ProcessStatusKind::kFrozen; + + process.Leak().Crash(); + + Kernel::ke_stop(RUNTIME_CHECK_POINTER); } /// @brief Handle page fault. @@ -36,6 +49,8 @@ EXTERN_C void idt_handle_pf(Kernel::UIntPtr rsp) process.Leak().Status = Kernel::ProcessStatusKind::kFrozen; process.Leak().Crash(); + + Kernel::ke_stop(RUNTIME_CHECK_PAGE); } /// @brief Handle scheduler interrupt. @@ -62,6 +77,8 @@ EXTERN_C void idt_handle_math(Kernel::UIntPtr rsp) process.Leak().Status = Kernel::ProcessStatusKind::kFrozen; process.Leak().Crash(); + + Kernel::ke_stop(RUNTIME_CHECK_UNEXCPECTED); } /// @brief Handle any generic fault. @@ -81,6 +98,8 @@ EXTERN_C void idt_handle_generic(Kernel::UIntPtr rsp) process.Leak().Status = Kernel::ProcessStatusKind::kFrozen; process.Leak().Crash(); + + Kernel::ke_stop(RUNTIME_CHECK_UNEXCPECTED); } EXTERN_C Kernel::Void idt_handle_breakpoint(Kernel::UIntPtr rip) @@ -99,6 +118,8 @@ EXTERN_C Kernel::Void idt_handle_breakpoint(Kernel::UIntPtr rip) kcout << "Kernel: PRCFROZE status set..\r"; process.Leak().Status = Kernel::ProcessStatusKind::kFrozen; + + Kernel::ke_stop(RUNTIME_CHECK_UNEXCPECTED); } /// @brief Handle #UD fault. @@ -118,6 +139,8 @@ EXTERN_C void idt_handle_ud(Kernel::UIntPtr rsp) process.Leak().Status = Kernel::ProcessStatusKind::kFrozen; process.Leak().Crash(); + + Kernel::ke_stop(RUNTIME_CHECK_UNEXCPECTED); } /// @brief Enter syscall from assembly. diff --git a/dev/ZKAKit/amd64-efi.make b/dev/ZKAKit/amd64-efi.make index 0e279520..dd9567d2 100644 --- a/dev/ZKAKit/amd64-efi.make +++ b/dev/ZKAKit/amd64-efi.make @@ -26,7 +26,7 @@ DISK_DRV = -D__AHCI__ endif ifneq ($(DEBUG_SUPPORT), ) -DEBUG_MACRO = -D__DEBUG__ +DEBUG_MACRO = -D__DEBUG__ endif COPY = cp diff --git a/dev/ZKAKit/src/UserProcessScheduler.cc b/dev/ZKAKit/src/UserProcessScheduler.cc index 4b24d98a..9524b7b8 100644 --- a/dev/ZKAKit/src/UserProcessScheduler.cc +++ b/dev/ZKAKit/src/UserProcessScheduler.cc @@ -57,6 +57,9 @@ namespace Kernel Void UserProcess::Crash() { + if (this->Status != ProcessStatusKind::kRunning) + return; + kcout << this->Name << ": crashed, error id: " << number(kErrorProcessFault) << endl; this->Exit(kErrorProcessFault); } |
