Skip to main content

os/
console.rs

1use crate::drivers::chardev::CharDevice;
2use crate::drivers::chardev::UART;
3use core::fmt::{self, Write};
4
5struct Stdout;
6
7impl Write for Stdout {
8    fn write_str(&mut self, s: &str) -> fmt::Result {
9        for c in s.chars() {
10            UART.write(c as u8);
11        }
12        Ok(())
13    }
14}
15
16pub fn print(args: fmt::Arguments) {
17    Stdout.write_fmt(args).unwrap();
18}
19
20#[macro_export]
21macro_rules! print {
22    ($fmt: literal $(, $($arg: tt)+)?) => {
23        $crate::console::print(format_args!($fmt $(, $($arg)+)?))
24    }
25}
26
27#[macro_export]
28macro_rules! println {
29    ($fmt: literal $(, $($arg: tt)+)?) => {
30        $crate::console::print(format_args!(concat!($fmt, "\n") $(, $($arg)+)?))
31    }
32}