mirror of
https://github.com/phil-opp/blog_os.git
synced 2025-12-17 23:07:50 +00:00
Make exit_qemu safe
This commit is contained in:
14
src/lib.rs
14
src/lib.rs
@@ -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,11 +31,13 @@ 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;
|
||||||
|
|
||||||
let mut port = Port::new(0xf4);
|
unsafe {
|
||||||
port.write(exit_code as u32);
|
let mut port = Port::new(0xf4);
|
||||||
|
port.write(exit_code as u32);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Entry point for `cargo xtest`
|
/// Entry point for `cargo xtest`
|
||||||
|
|||||||
Reference in New Issue
Block a user