1#[macro_export]
5macro_rules! args_from_raw {
6 ($argc:expr, $argv:expr) => {{
7 let argc = $argc;
8 let argv = $argv;
9
10 if argc == 0 || argv.is_null() {
11 &[]
12 } else {
13 unsafe { core::slice::from_raw_parts(argv, argc) }
14 }
15 }};
16}
17
18#[macro_export]
19macro_rules! kprint {
20 ($($arg:tt)*) => ({
21 use core::fmt::Write;
22 use $crate::print::Printer;
23 let mut printer = Printer;
24 printer.write_fmt(format_args!($($arg)*)).unwrap();
25 });
26}
27
28#[macro_export]
29macro_rules! kprintln {
30 ($($arg:tt)*) => ({
31 use core::fmt::Write;
32 use $crate::print::Printer;
33 let mut printer = Printer;
34 printer.write_fmt(format_args!($($arg)*)).unwrap();
35 printer.write_str("\n").unwrap();
36 });
37}