os/
console.rs

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