Nothing to see here, move along
1#[macro_export]
2macro_rules! kprint {
3 ($($arg:tt)*) => {{
4 use core::fmt::Write;
5 let _ = write!($crate::arch::serial::SerialWriter, $($arg)*);
6 }};
7}
8
9#[macro_export]
10macro_rules! kprintln {
11 () => { $crate::kprint!("\n") };
12 ($($arg:tt)*) => {{
13 $crate::kprint!("{}\n", format_args!($($arg)*));
14 }};
15}
16
17pub const KLOG_GUTTER: usize = 13;
18
19#[macro_export]
20macro_rules! klog {
21 ($tag:expr, error, $($arg:tt)*) => {{
22 $crate::log::klog_impl($tag, lancer_log::Severity::Error, format_args!($($arg)*));
23 }};
24 ($tag:expr, warn, $($arg:tt)*) => {{
25 $crate::log::klog_impl($tag, lancer_log::Severity::Warn, format_args!($($arg)*));
26 }};
27 ($tag:expr, $($arg:tt)*) => {{
28 $crate::log::klog_impl($tag, lancer_log::Severity::Info, format_args!($($arg)*));
29 }};
30}
31
32pub fn klog_impl(tag: &str, severity: lancer_log::Severity, message: core::fmt::Arguments<'_>) {
33 use core::fmt::Write;
34 let tsc = crate::wcet::tsc::read_tsc();
35 crate::flight::recorder().append(tsc, severity, tag, message);
36 let mut w = crate::arch::serial::SerialWriter;
37 let _ = lancer_log::format::write_gutter(&mut w, tag, severity, message, KLOG_GUTTER);
38 let _ = w.write_str("\n");
39}
40
41#[macro_export]
42macro_rules! show {
43 ($domain:ident, error, $($arg:tt)*) => {{
44 $crate::log::kernel_show(
45 stringify!($domain),
46 lancer_log::Severity::Error,
47 format_args!($($arg)*),
48 );
49 }};
50 ($domain:ident, warn, $($arg:tt)*) => {{
51 $crate::log::kernel_show(
52 stringify!($domain),
53 lancer_log::Severity::Warn,
54 format_args!($($arg)*),
55 );
56 }};
57 ($domain:ident, $($arg:tt)*) => {{
58 $crate::log::kernel_show(
59 stringify!($domain),
60 lancer_log::Severity::Info,
61 format_args!($($arg)*),
62 );
63 }};
64}
65
66#[macro_export]
67macro_rules! phase_begin {
68 ($domain:ident) => {{
69 match $crate::dashboard::domain_to_section(stringify!($domain)) {
70 Some(idx) => $crate::dashboard::dash().begin_phase(idx),
71 None => {}
72 }
73 }};
74}
75
76#[macro_export]
77macro_rules! phase_end {
78 ($domain:ident) => {{
79 match $crate::dashboard::domain_to_section(stringify!($domain)) {
80 Some(idx) => $crate::dashboard::dash().end_phase(idx),
81 None => {}
82 }
83 }};
84}
85
86#[macro_export]
87macro_rules! phase_fail {
88 ($domain:ident) => {{
89 match $crate::dashboard::domain_to_section(stringify!($domain)) {
90 Some(idx) => $crate::dashboard::dash().fail_phase(idx),
91 None => {}
92 }
93 }};
94}
95
96#[allow(dead_code)]
97pub fn kernel_show(domain: &str, severity: lancer_log::Severity, message: core::fmt::Arguments<'_>) {
98 use core::fmt::Write;
99 let tsc = crate::wcet::tsc::read_tsc();
100 crate::flight::recorder().append(tsc, severity, domain, message);
101 match crate::dashboard::domain_to_section(domain) {
102 Some(idx) => {
103 let mut buf = crate::dashboard::FmtBuf::new();
104 let _ = lancer_log::format::write_message_only(&mut buf, severity, message);
105 crate::dashboard::dash().log(idx, buf.as_str());
106 }
107 None => {
108 let mut w = crate::arch::serial::SerialWriter;
109 let _ = lancer_log::format::write_gutter(
110 &mut w,
111 domain,
112 severity,
113 message,
114 KLOG_GUTTER,
115 );
116 let _ = w.write_str("\n");
117 }
118 }
119}