重写rust核心库,构建中断处理框架 #6

Merged
pointer-to-bios merged 18 commits from pointer-to-bios/metaverse-dev:main into main 2024-05-03 05:45:43 +08:00
2 changed files with 15 additions and 12 deletions
Showing only changes of commit 47f16d060e - Show all commits

View File

@ -13,15 +13,11 @@ unsafe extern "C" fn interrupt_req_UNSUPPORTED(rip: u64, rsp: u64, errcode: u64)
interrupt_rust_enter(); interrupt_rust_enter();
let tty = Tty::from_id(0).unwrap(); let tty = Tty::from_id(0).unwrap();
tty.enable(); tty.enable();
let msg = message_raw!( tty.print(message!(
Msg("Panic:"), "{Panic}: Kernel hit an {Unsupported} interrupt. \n",
FgColor::<u8>(Color::RED), FmtMeta::Color(Color::RED),
Msg(" Kernel hit an unsupported interrupt\n\twith %rip=0x"), FmtMeta::Color(Color::YELLOW)
Msg(rip.to_hex_string()), ));
Msg(" and %rsp=0x"),
Msg(rsp.to_hex_string())
);
tty.print(msg);
loop {} loop {}
} }
@ -31,11 +27,12 @@ unsafe extern "C" fn interrupt_req_DE(rip: u64, rsp: u64, errcode: u64) {
let tty = Tty::from_id(0).unwrap(); let tty = Tty::from_id(0).unwrap();
tty.enable(); tty.enable();
tty.print(message!( tty.print(message!(
"{Panic}: divided by zero. rip=0x{}.\n", "{Panic}: Kernel hit {Divid Error} on rip=0x{} and rsp=0x{}.\n",
FmtMeta::Color(Color::RED), FmtMeta::Color(Color::RED),
FmtMeta::Pointer(rip as usize) FmtMeta::Color(Color::YELLOW),
FmtMeta::Pointer(rip as usize),
FmtMeta::Pointer(rsp as usize)
)); ));
loop {}
interrupt_rust_leave(); interrupt_rust_leave();
} }

View File

@ -47,6 +47,12 @@ macro_rules! message_raw {
#[macro_export] #[macro_export]
macro_rules! message { macro_rules! message {
( $fmtter : expr ) => {{
use crate::kernel::tty::tty::MessageBuilder;
MessageBuilder::new()
.message($fmtter)
.build()
}};
( $fmtter : expr, $( $e : expr ),* ) => {{ ( $fmtter : expr, $( $e : expr ),* ) => {{
use crate::{ use crate::{
kernel::tty::tty::{ kernel::tty::tty::{