diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-12-28 15:17:29 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal@nekernel.org> | 2025-12-28 15:17:29 +0100 |
| commit | a70a1fc41e4420a3db2e64467cec349d794738ff (patch) | |
| tree | 33a90e58acf97d197a63e4cc034af95396135aad /src/kernel/HALKit | |
| parent | 9012c6fb7c040be92aa8f950bad4f49c5be264d8 (diff) | |
feat: kernel: architectural and implementation improvements.v0.1.1
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'src/kernel/HALKit')
| -rw-r--r-- | src/kernel/HALKit/AMD64/HalCoreInterruptHandler.cc | 48 | ||||
| -rw-r--r-- | src/kernel/HALKit/AMD64/HalKernelMain.cc | 2 |
2 files changed, 24 insertions, 26 deletions
diff --git a/src/kernel/HALKit/AMD64/HalCoreInterruptHandler.cc b/src/kernel/HALKit/AMD64/HalCoreInterruptHandler.cc index c4209870..8f9e2e45 100644 --- a/src/kernel/HALKit/AMD64/HalCoreInterruptHandler.cc +++ b/src/kernel/HALKit/AMD64/HalCoreInterruptHandler.cc @@ -31,26 +31,26 @@ static void hal_idt_send_eoi(UInt8 vector) { /// @param rsp EXTERN_C Kernel::Void idt_handle_gpf(Kernel::UIntPtr rsp) { auto process = Kernel::UserProcessScheduler::The().TheCurrentProcess(); - process.Leak().Crash(); + process.Crash(); hal_idt_send_eoi(13); - process.Leak().Signal.SignalArg = rsp; - process.Leak().Signal.SignalID = SIGKILL; - process.Leak().Signal.Status = process.Leak().Status; + process.Signal.SignalArg = rsp; + process.Signal.SignalID = SIGKILL; + process.Signal.Status = process.Status; } /// @brief Handle page fault. /// @param rsp EXTERN_C void idt_handle_pf(Kernel::UIntPtr rsp) { auto process = Kernel::UserProcessScheduler::The().TheCurrentProcess(); - process.Leak().Crash(); + process.Crash(); hal_idt_send_eoi(14); - process.Leak().Signal.SignalArg = rsp; - process.Leak().Signal.SignalID = SIGKILL; - process.Leak().Signal.Status = process.Leak().Status; + process.Signal.SignalArg = rsp; + process.Signal.SignalID = SIGKILL; + process.Signal.Status = process.Status; } /// @brief Handle scheduler interrupt. @@ -72,30 +72,30 @@ EXTERN_C void idt_handle_scheduler(Kernel::UIntPtr rsp) { /// @param rsp EXTERN_C void idt_handle_math(Kernel::UIntPtr rsp) { auto process = Kernel::UserProcessScheduler::The().TheCurrentProcess(); - process.Leak().Crash(); + process.Crash(); hal_idt_send_eoi(8); - process.Leak().Signal.SignalArg = rsp; - process.Leak().Signal.SignalID = sig_generate_unique<SIGKILL>(); + process.Signal.SignalArg = rsp; + process.Signal.SignalID = sig_generate_unique<SIGKILL>(); ; - process.Leak().Signal.Status = process.Leak().Status; + process.Signal.Status = process.Status; } /// @brief Handle any generic fault. /// @param rsp EXTERN_C void idt_handle_generic(Kernel::UIntPtr rsp) { auto process = Kernel::UserProcessScheduler::The().TheCurrentProcess(); - process.Leak().Crash(); + process.Crash(); hal_idt_send_eoi(30); Kernel::kout << "Kernel: Generic Process Fault.\r"; - process.Leak().Signal.SignalArg = rsp; - process.Leak().Signal.SignalID = sig_generate_unique<SIGSEG>(); + process.Signal.SignalArg = rsp; + process.Signal.SignalID = sig_generate_unique<SIGSEG>(); ; - process.Leak().Signal.Status = process.Leak().Status; + process.Signal.Status = process.Status; Kernel::kout << "Kernel: SIGKILL status.\r"; } @@ -105,25 +105,25 @@ EXTERN_C Kernel::Void idt_handle_breakpoint(Kernel::UIntPtr rip) { hal_idt_send_eoi(3); - process.Leak().Signal.SignalArg = rip; - process.Leak().Signal.SignalID = sig_generate_unique<SIGTRAP>(); + process.Signal.SignalArg = rip; + process.Signal.SignalID = sig_generate_unique<SIGTRAP>(); - process.Leak().Signal.Status = process.Leak().Status; + process.Signal.Status = process.Status; - process.Leak().Status = Kernel::ProcessStatusKind::kFrozen; + process.Status = Kernel::ProcessStatusKind::kFrozen; } /// @brief Handle #UD fault. /// @param rsp EXTERN_C void idt_handle_ud(Kernel::UIntPtr rsp) { auto process = Kernel::UserProcessScheduler::The().TheCurrentProcess(); - process.Leak().Crash(); + process.Crash(); hal_idt_send_eoi(6); - process.Leak().Signal.SignalArg = rsp; - process.Leak().Signal.SignalID = sig_generate_unique<SIGKILL>(); - process.Leak().Signal.Status = process.Leak().Status; + process.Signal.SignalArg = rsp; + process.Signal.SignalID = sig_generate_unique<SIGKILL>(); + process.Signal.Status = process.Status; } /// @brief Enter syscall from assembly (libSystem only) diff --git a/src/kernel/HALKit/AMD64/HalKernelMain.cc b/src/kernel/HALKit/AMD64/HalKernelMain.cc index 2e2cca44..4cf7d608 100644 --- a/src/kernel/HALKit/AMD64/HalKernelMain.cc +++ b/src/kernel/HALKit/AMD64/HalKernelMain.cc @@ -145,8 +145,6 @@ EXTERN_C Kernel::Void hal_real_init(Kernel::Void) { // AMLALE: TODO: Prosan, Process sanitizer. rtl_create_user_process([]() -> void { while (YES); }, "ProSan"); - UserProcessScheduler::The().SwitchTeam(kMidUserTeam); - // AMLALE: TODO, Vet sanitizer. rtl_create_user_process([]() -> void { while (YES); }, "VetSan"); |
