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}