Nothing to see here, move along
at main 119 lines 3.5 kB view raw
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}