1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 20:58:11 +00:00

Kernel: Use PANIC() in a bunch of places :^)

This commit is contained in:
Andreas Kling 2021-02-14 09:30:31 +01:00
parent c598a95b1c
commit b712345c92
8 changed files with 26 additions and 42 deletions

View file

@ -43,6 +43,7 @@
#include <Kernel/Interrupts/SpuriousInterruptHandler.h>
#include <Kernel/Interrupts/UnhandledInterruptHandler.h>
#include <Kernel/KSyms.h>
#include <Kernel/Panic.h>
#include <Kernel/Process.h>
#include <Kernel/Random.h>
#include <Kernel/SpinLock.h>
@ -163,8 +164,7 @@ void handle_crash(RegisterState& regs, const char* description, int signal, bool
{
auto process = Process::current();
if (!process) {
dmesgln("{} with !current", description);
Processor::halt();
PANIC("{} with !current", description);
}
// If a process crashed while inspecting another process,
@ -175,9 +175,7 @@ void handle_crash(RegisterState& regs, const char* description, int signal, bool
dump(regs);
if (!(regs.cs & 3)) {
dmesgln("Crash in ring 0 :(");
dump_backtrace();
Processor::halt();
PANIC("Crash in ring 0");
}
cli();
@ -330,9 +328,7 @@ void debug_handler(TrapFrame* trap)
auto current_thread = Thread::current();
auto& process = current_thread->process();
if ((regs.cs & 3) == 0) {
dmesgln("Debug exception in ring 0");
Processor::halt();
return;
PANIC("Debug exception in ring 0");
}
constexpr u8 REASON_SINGLESTEP = 14;
bool is_reason_singlestep = (read_dr6() & (1 << REASON_SINGLESTEP));
@ -353,9 +349,7 @@ void breakpoint_handler(TrapFrame* trap)
auto current_thread = Thread::current();
auto& process = current_thread->process();
if ((regs.cs & 3) == 0) {
dmesgln("Breakpoint trap in ring 0");
Processor::halt();
return;
PANIC("Breakpoint trap in ring 0");
}
if (auto tracer = process.tracer()) {
tracer->set_regs(regs);
@ -376,8 +370,7 @@ void breakpoint_handler(TrapFrame* trap)
: "=a"(cr3)); \
asm("movl %%cr4, %%eax" \
: "=a"(cr4)); \
dbgln("cr0={:08x} cr2={:08x} cr3={:08x} cr4={:08x}", cr0, cr2, cr3, cr4); \
Processor::halt(); \
PANIC("cr0={:08x} cr2={:08x} cr3={:08x} cr4={:08x}", cr0, cr2, cr3, cr4); \
}
EH(2, "Unknown error")
@ -398,8 +391,7 @@ const DescriptorTablePointer& get_idtr()
static void unimp_trap()
{
dmesgln("Unhandled IRQ");
Processor::Processor::halt();
PANIC("Unhandled IRQ");
}
GenericInterruptHandler& get_interrupt_handler(u8 interrupt_number)