Kernel: Generally improve signals

This commit is contained in:
Bananymous
2023-07-31 22:28:18 +03:00
parent 834bf33e57
commit c4f6c859c1
6 changed files with 46 additions and 19 deletions

View File

@@ -189,12 +189,22 @@ namespace IDT
break;
}
Kernel::Thread::current().handle_signal(-signal);
Kernel::Thread::current().handle_signal(signal);
}
else
{
Kernel::panic("Unhandled exception");
}
switch (Kernel::Thread::current().state())
{
case Kernel::Thread::State::Terminating:
ASSERT_NOT_REACHED();
case Kernel::Thread::State::Terminated:
Kernel::Scheduler::get().execute_current_thread();
default:
break;
}
}
extern "C" void cpp_irq_handler(uint64_t irq, Kernel::InterruptStack& interrupt_stack)
@@ -222,6 +232,16 @@ namespace IDT
InterruptController::get().eoi(irq);
Kernel::Scheduler::get().reschedule_if_idling();
switch (Kernel::Thread::current().state())
{
case Kernel::Thread::State::Terminating:
ASSERT_NOT_REACHED();
case Kernel::Thread::State::Terminated:
Kernel::Scheduler::get().execute_current_thread();
default:
break;
}
}
static void flush_idt()