From 3cdbf67de47e033110ad1250398c51e611daa1c4 Mon Sep 17 00:00:00 2001 From: natrixaeria Date: Fri, 8 Nov 2019 17:08:56 +0100 Subject: Add centered mode to vga compatible text mode --- kernel/src/lib.rs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'kernel/src/lib.rs') diff --git a/kernel/src/lib.rs b/kernel/src/lib.rs index d5a3e9e..cbc9915 100644 --- a/kernel/src/lib.rs +++ b/kernel/src/lib.rs @@ -1,6 +1,7 @@ #![no_main] #![feature(compiler_builtins_lib)] #![feature(custom_test_frameworks)] +#![feature(panic_info_message)] #![test_runner(crate::test_runner)] #![reexport_test_harness_main = "test_main"] #![no_std] @@ -33,7 +34,7 @@ pub extern "C" fn _start() -> ! { let mut stdout = OStream::new(); stdout.clear(); - panic!("panic!"); + panic!("panic! at the disco"); core::iter::successors(Some(0), |n| Some(n + 1)) .for_each(|n| write!(&mut stdout, "hello world {}!", n).unwrap()); @@ -43,7 +44,7 @@ pub extern "C" fn _start() -> ! { #[panic_handler] #[no_mangle] -pub extern "C" fn panic_handler(_info: &core::panic::PanicInfo) -> ! { +pub extern "C" fn panic_handler(info: &core::panic::PanicInfo) -> ! { let mut stderr = OStream::new(); stderr.set_state(vga_text::CharState::from_colors( vga_text::Color::LightRed, @@ -58,15 +59,15 @@ pub extern "C" fn panic_handler(_info: &core::panic::PanicInfo) -> ! { )); stderr.print_centered(b""); stderr.set_row(14); - let text = _info - .payload() - .downcast_ref::<&str>() - .unwrap_or(&"no panic information is obtainable"); stderr.set_state(vga_text::CharState::from_colors( vga_text::Color::Cyan, vga_text::Color::Red, )); - stderr.print_centered(text.as_bytes()); + stderr.set_centered(true); + write!(&mut stderr, "{:?}", info.message() + .unwrap_or(&format_args!("no panic information obtainable"))); + //loop{} + stderr.set_centered(false); if cfg!(test) { write!(serial::SerialStream::new(), "Testing failed\n").unwrap(); qemu::exit_qemu(qemu::QemuExitCode::Failed); -- cgit v1.2.3-54-g00ecf