Skip to main content

proka_kernel/output/
dual.rs

1#[cfg(ENABLE_GRAPHICS)]
2use crate::output::console::_print as console_print;
3use crate::output::serial::_print as serial_print;
4
5/// 双重打印宏:同时输出到控制台和串口
6#[macro_export]
7macro_rules! print {
8    ($($arg:tt)*) => {
9        {
10            $crate::output::dual::_dual_print_serial(format_args!($($arg)*));
11            // 总是输出到控制台
12            $crate::output::dual::_dual_print_console(format_args!($($arg)*))
13        }
14    };
15}
16
17/// 双重打印宏(带换行)
18#[macro_export]
19macro_rules! println {
20    () => {
21        $crate::print!("\n")
22    };
23    ($($arg:tt)*) => {
24        $crate::print!("{}\n", format_args!($($arg)*))
25    };
26}
27
28// 内部函数:处理控制台打印
29#[doc(hidden)]
30#[allow(unused_variables)]
31pub fn _dual_print_console(args: core::fmt::Arguments) {
32    #[cfg(ENABLE_GRAPHICS)]
33    console_print(args);
34}
35
36// 内部函数:处理串口打印
37#[doc(hidden)]
38pub fn _dual_print_serial(args: core::fmt::Arguments) {
39    serial_print(args);
40}