mirror of
https://github.com/phil-opp/blog_os.git
synced 2025-12-16 22:37:49 +00:00
Make exit_qemu safe
This commit is contained in:
@@ -14,15 +14,13 @@ pub fn test_runner(tests: &[&dyn Fn()]) {
|
|||||||
for test in tests {
|
for test in tests {
|
||||||
test();
|
test();
|
||||||
}
|
}
|
||||||
unsafe { exit_qemu(QemuExitCode::Success) };
|
exit_qemu(QemuExitCode::Success);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn test_panic_handler(info: &PanicInfo) -> ! {
|
pub fn test_panic_handler(info: &PanicInfo) -> ! {
|
||||||
serial_println!("[failed]\n");
|
serial_println!("[failed]\n");
|
||||||
serial_println!("Error: {}\n", info);
|
serial_println!("Error: {}\n", info);
|
||||||
unsafe {
|
|
||||||
exit_qemu(QemuExitCode::Failed);
|
exit_qemu(QemuExitCode::Failed);
|
||||||
}
|
|
||||||
loop {}
|
loop {}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -33,12 +31,14 @@ pub enum QemuExitCode {
|
|||||||
Failed = 0x11,
|
Failed = 0x11,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub unsafe fn exit_qemu(exit_code: QemuExitCode) {
|
pub fn exit_qemu(exit_code: QemuExitCode) {
|
||||||
use x86_64::instructions::port::Port;
|
use x86_64::instructions::port::Port;
|
||||||
|
|
||||||
|
unsafe {
|
||||||
let mut port = Port::new(0xf4);
|
let mut port = Port::new(0xf4);
|
||||||
port.write(exit_code as u32);
|
port.write(exit_code as u32);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Entry point for `cargo xtest`
|
/// Entry point for `cargo xtest`
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
|||||||
Reference in New Issue
Block a user