#![no_std]
extern crate alloc;
#[doc(hidden)]
pub mod writer;
#[cfg(feature = "std_name")]
#[doc(hidden)]
pub mod std_name {
pub use super::kernel_dbg as dbg;
pub use super::kernel_print as print;
pub use super::kernel_println as println;
}
#[cfg(feature = "std_name")]
pub use std_name::*;
#[macro_export]
macro_rules! kernel_dbg {
() => {
$crate::kernel_println!("[{}:{}]", file!(), line!());
};
($val:expr) => {
match $val {
tmp => {
$crate::kernel_println!("[{}:{}] {} = {:#?}",
file!(), line!(), stringify!($val), &tmp);
tmp
}
}
};
($val:expr,) => { $crate::kernel_dbg!($val) };
($($val:expr),+ $(,)?) => {
($($crate::kernel_dbg!($val)),+,)
};
}
#[macro_export]
macro_rules! kernel_print {
($($arg:tt)*) => {
$crate::__impl_print!($($arg)*);
};
}
#[cfg(not(feature = "format"))]
#[macro_export]
#[doc(hidden)]
macro_rules! __impl_print {
($($arg:tt)*) => {
{
let mut writer = $crate::writer::KernelWriter::new();
let _ = writer.write_fmt(format_args!($($arg)*));
}
};
}
#[cfg(feature = "format")]
#[macro_export]
#[doc(hidden)]
macro_rules! __impl_print {
($($arg:tt)*) => {
{
let out = alloc::format!($($arg)*);
let _ = $crate::writer::__kernel_println(out);
}
};
}
#[macro_export]
macro_rules! kernel_println {
() => {
$crate::kernel_println!("")
};
($($arg:tt)*) => {
$crate::__impl_println!($($arg)*);
};
}
#[cfg(not(feature = "format"))]
#[macro_export]
#[doc(hidden)]
macro_rules! __impl_println {
($($arg:tt)*) => {
{
let mut writer = $crate::writer::KernelWriter::new();
let _ = writer.write_fmt(format_args!($($arg)*));
let _ = writer.write_nl();
}
};
}
#[cfg(feature = "format")]
#[macro_export]
#[doc(hidden)]
macro_rules! __impl_println {
($($arg:tt)*) => {
{
let out = {
let mut out = alloc::format!($($arg)*);
out.push('\n');
out
};
let _ = $crate::writer::__kernel_println(out);
}
};
}