2023-09-17 17:13:23 -05:00
|
|
|
use {crate::logger::TERMINAL_LOGGER, core::fmt::Write, spin::Mutex};
|
2024-09-10 14:52:57 -05:00
|
|
|
pub static SERIAL_CONSOLE: Mutex<SerialConsole> = Mutex::new(SerialConsole {
|
2023-07-20 04:21:00 -05:00
|
|
|
uart: 0x09000000 as *mut u8,
|
|
|
|
});
|
|
|
|
|
2024-10-15 03:44:12 -05:00
|
|
|
pub struct SerialConsole {
|
2023-07-20 04:21:00 -05:00
|
|
|
uart: *mut u8,
|
|
|
|
}
|
|
|
|
|
|
|
|
impl core::fmt::Write for SerialConsole {
|
|
|
|
fn write_str(&mut self, s: &str) -> core::fmt::Result {
|
|
|
|
for c in s.chars() {
|
|
|
|
unsafe { *self.uart = c as u8 }
|
|
|
|
}
|
|
|
|
|
|
|
|
Ok(())
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-09-10 14:52:57 -05:00
|
|
|
unsafe impl Sync for SerialConsole {}
|
|
|
|
unsafe impl Send for SerialConsole {}
|
|
|
|
|
2023-07-20 04:21:00 -05:00
|
|
|
pub fn log(args: core::fmt::Arguments<'_>) -> core::fmt::Result {
|
2023-09-17 17:13:23 -05:00
|
|
|
SERIAL_CONSOLE.lock().write_fmt(args)?;
|
2024-09-19 06:05:11 -05:00
|
|
|
// TERMINAL_LOGGER.lock().write_fmt(args)?;
|
2023-09-17 17:13:23 -05:00
|
|
|
|
|
|
|
Ok(())
|
2023-07-20 04:21:00 -05:00
|
|
|
}
|