Kernel: Generally improve signals
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user