starry_api/
lib.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#![no_std]
#![allow(missing_docs)]

#[macro_use]
extern crate axlog;
extern crate alloc;

mod imp;
mod ptr;

pub use imp::*;

macro_rules! syscall_instrument {(
    $( #[$attr:meta] )*
    $pub:vis
    fn $fname:ident (
        $( $arg_name:ident : $ArgTy:ty ),* $(,)?
    ) -> $RetTy:ty
    $body:block
) => (
    $( #[$attr] )*
    #[allow(unused_parens)]
    $pub
    fn $fname (
        $( $arg_name : $ArgTy ),*
    ) -> $RetTy
    {
        /// Re-emit the original function definition, but as a scoped helper
        $( #[$attr] )*
        fn __original_func__ (
            $($arg_name: $ArgTy),*
        ) -> $RetTy
        $body

        let res = __original_func__($($arg_name),*);
        match res {
            Ok(_) | Err(axerrno::LinuxError::EAGAIN) => debug!(concat!(stringify!($fname), " => {:?}"),  res),
            Err(_) => info!(concat!(stringify!($fname), " => {:?}"), res),
        }
        res
    }
)}
pub(crate) use syscall_instrument;