summaryrefslogtreecommitdiff
path: root/kernel/src/io/serial.rs
blob: e1d46607ff693967aab00bf173ef7da1e8b99ad4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[repr(u32)]
pub enum QemuExitCode {
    Success = 0x10, // The actual exit code is (value << 1) | 1.
    Failed = 0x11,
}

pub fn exit_qemu(exit_code: QemuExitCode) {
    use x86_64::instructions::port::Port;

    unsafe {
        let mut port = Port::new(0xf4);
        port.write(exit_code as u32);
    }
}

fn trivial_assertion() {
    use crate::io::vga_text::OStream;
    let mut stdout = OStream::new();
    stdout.clear();

    stdout.print(b"trivial assertion... ");
    assert_eq!(0, 1);
    stdout.print(b"[ok]");
}