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}