userspace/target/operating_system/macros/
info.rs

1pub struct Stdout;
2
3fn print(msg: &str) -> crate::Result {
4    let out = crate::target::operating_system::syscall::write(1, msg.as_ptr(), msg.len());
5
6    match out {
7        _ => Ok(crate::Ok::Target(crate::target::Ok::Info(32))),
8    }
9}
10
11impl core::fmt::Write for Stdout {
12    fn write_str(&mut self, s: &str) -> core::fmt::Result {
13        let _ = print(s);
14        Ok(())
15    }
16}
17
18#[macro_export]
19macro_rules! info {
20    (X $($arg:tt)*) => {{
21        // use core::fmt::Write;
22        // let mut writer = $crate::stdout::Stdout;
23        // let _ = write!(&mut writer, $($arg)*);
24    }};
25    (S $($arg:tt)*) => {{
26        use core::fmt::Write;
27        let mut writer = $crate::stdout::Stdout;
28        let _ = write!(&mut writer, $($arg)*);
29    }};
30    ($($arg:tt)*) => {{
31
32        // let file = file!();
33        // let out = info::syscall::write(1, file.as_ptr(), file.len());
34
35        use core::fmt::Write;
36        let mut writer = crate::target::os::macros::info::Stdout;
37        // let _ = write!(&mut writer, "\n[ {}:{}:{} ] ",file!(),line!(),column!());
38        let _ = write!(&mut writer, $($arg)*);
39    }};
40}
41
42#[macro_export]
43macro_rules! tinfo {
44    (X $($arg:tt)*) => {{
45        // use core::fmt::Write;
46        // let mut writer = $crate::stdout::Stdout;
47        // let _ = write!(&mut writer, $($arg)*);
48    }};
49    (S $($arg:tt)*) => {{
50        use core::fmt::Write;
51        let mut writer = $crate::stdout::Stdout;
52        let _ = write!(&mut writer, $($arg)*);
53    }};
54    ($($arg:tt)*) => {{
55
56        // let file = file!();
57        // let out = info::syscall::write(1, file.as_ptr(), file.len());
58
59        use core::fmt::Write;
60        let mut writer = crate::target::os::macros::info::Stdout;
61        // let _ = write!(&mut writer, "\n[ {}:{}:{} ] ",file!(),line!(),column!());
62        let _ = write!(&mut writer, $($arg)*);
63    }};
64}
65pub use info;
66pub use tinfo;