use spin::{Lazy, Mutex}; use uart_16550::SerialPort; pub static SERIAL1: Lazy> = Lazy::new(|| { let mut serial_port = unsafe { SerialPort::new(0x3F8) }; serial_port.init(); Mutex::new(serial_port) }); #[doc(hidden)] pub fn _print(args: ::core::fmt::Arguments) { use core::fmt::Write; // /* SERIAL1 .lock() .write_fmt(args) .expect("Printing to serial failed"); // */ } /// Prints to the host through the serial interface. #[macro_export] macro_rules! sprint { ($($arg:tt)*) => { $crate::arch::drivers::serial::_print(format_args!($($arg)*)); }; } /// Prints to the host through the serial interface, appending a newline. #[macro_export] macro_rules! sprintln { () => ($crate::sprint!("\n")); ($fmt:expr) => ($crate::sprint!(concat!($fmt, "\n"))); ($fmt:expr, $($arg:tt)*) => ($crate::sprint!( concat!($fmt, "\n"), $($arg)*)); }