use crate::io::{qemu, serial}; use core::fmt::Write; use core::panic::PanicInfo; use qemu::{exit_qemu, QemuExitCode}; use serial::SerialStream; use x86_64::instructions::interrupts; pub fn serial_should_panic(_info: &PanicInfo) -> ! { interrupts::disable(); let mut stdout = SerialStream::new(); write!(stdout, "\nOK\nsuccessfully panicked\n").unwrap(); exit_qemu(QemuExitCode::Success) } pub fn serial_panic(info: &PanicInfo) -> ! { interrupts::disable(); crate::io::panic_screen::show(info.message()); let mut stdout = SerialStream::new(); write!( stdout, "\nERR\nPanicked execute without -serial for more details\n{}", info ) .unwrap(); exit_qemu(QemuExitCode::Failed) } pub fn should_panic(_info: &PanicInfo) -> ! { interrupts::disable(); exit_qemu(QemuExitCode::Success) } pub fn panic(info: &PanicInfo) -> ! { interrupts::disable(); crate::io::panic_screen::show(info.message()); loop {} }