macro_rules! raw_syscall {
    ([ro] $sysno:expr, $arg0:expr, $arg1:expr, $arg2:expr, $arg3:expr, $arg4:expr, $arg5:expr $(,)?) => { ... };
    ([ro] $sysno:expr, $arg0:expr, $arg1:expr, $arg2:expr, $arg3:expr, $arg4:expr $(,)?) => { ... };
    ([ro] $sysno:expr, $arg0:expr, $arg1:expr, $arg2:expr, $arg3:expr $(,)?) => { ... };
    ([ro] $sysno:expr, $arg0:expr, $arg1:expr, $arg2:expr $(,)?) => { ... };
    ([ro] $sysno:expr, $arg0:expr, $arg1:expr $(,)?) => { ... };
    ([!] $sysno:expr, $arg0:expr $(,)?) => { ... };
    ([ro] $sysno:expr, $arg0:expr $(,)?) => { ... };
    ([ro] $sysno:expr $(,)?) => { ... };
    ($sysno:expr, $arg0:expr, $arg1:expr, $arg2:expr, $arg3:expr, $arg4:expr, $arg5:expr $(,)?) => { ... };
    ($sysno:expr, $arg0:expr, $arg1:expr, $arg2:expr, $arg3:expr, $arg4:expr $(,)?) => { ... };
    ($sysno:expr, $arg0:expr, $arg1:expr, $arg2:expr, $arg3:expr $(,)?) => { ... };
    ($sysno:expr, $arg0:expr, $arg1:expr, $arg2:expr $(,)?) => { ... };
    ($sysno:expr, $arg0:expr, $arg1:expr $(,)?) => { ... };
    ($sysno:expr, $arg0:expr $(,)?) => { ... };
    ($sysno:expr $(,)?) => { ... };
}
Expand description

Make a syscall and returns a usize

Accept a Sysno as the first parameter and a variable number of arguments (0 to 6). It calls syscallN under the hood where N is the number of arguments.

The are two variations:

  • [ro]: use the _readonly version of raw_syscallN.
  • [!]: use the _noreturn version of syscall1 (useful for exit).

Use the previous tags if you what are you doing, otherwise you can omit them.

Example

use linux_syscalls::{Sysno, raw_syscall};

println!("{}", raw_syscall!([ro] Sysno::brk, 0));

// [!] because exit do not return.
unsafe { raw_syscall!([!] Sysno::exit, 0) };