From 25a4c9415bb92f47472a52ec913f4baf7b14d50f Mon Sep 17 00:00:00 2001 From: Gabriel Kaszewski Date: Mon, 19 Oct 2026 00:53:52 +0200 Subject: [PATCH] feat(libkos): add print!/println! macros via debug_putchar --- crates/libkos/src/io.rs | 28 ++++++++++++++++++++++++++++ crates/libkos/src/lib.rs | 1 + 2 files changed, 29 insertions(+) create mode 100644 crates/libkos/src/io.rs diff --git a/crates/libkos/src/io.rs b/crates/libkos/src/io.rs new file mode 100644 index 0000000..1107e66 --- /dev/null +++ b/crates/libkos/src/io.rs @@ -0,0 +1,28 @@ +use core::fmt; + +struct Writer; + +impl fmt::Write for Writer { + fn write_str(&mut self, s: &str) -> fmt::Result { + for &b in s.as_bytes() { + crate::syscall::debug_putchar(b); + } + Ok(()) + } +} + +pub fn _print(args: fmt::Arguments) { + use fmt::Write; + Writer.write_fmt(args).ok(); +} + +#[macro_export] +macro_rules! print { + ($($arg:tt)*) => ($crate::io::_print(format_args!($($arg)*))); +} + +#[macro_export] +macro_rules! println { + () => ($crate::print!("\n")); + ($($arg:tt)*) => ($crate::print!("{}\n", format_args!($($arg)*))); +} diff --git a/crates/libkos/src/lib.rs b/crates/libkos/src/lib.rs index 06663cc..3d47de7 100644 --- a/crates/libkos/src/lib.rs +++ b/crates/libkos/src/lib.rs @@ -5,6 +5,7 @@ extern crate alloc; mod arch; pub mod syscall; pub mod alloc_impl; +pub mod io; mod rt; #[cfg(target_os = "none")]