#system #call #syscalls #raw #no-std

nightly no-std raw-syscall-base

低级原始系统调用基础

7 个版本

0.8.2 2018年10月23日
0.8.1 2018年10月23日
0.7.6 2018年10月4日
0.6.2 2018年9月14日

#890 in Unix API


用于 2 crates

MIT-0 OR 0BSD

43KB
1K SLoC

raw-syscall-base

低级系统调用。

Latest version Documentation Downloads License

用法

将以下内容添加到您的 Cargo.toml

raw-syscall-base = "0.8.2"

支持的平台

  • aarch64-linux
  • arm-linux
  • x86_64-freebsd
  • x86_64-linux

目的

此软件包仅限于提供在目标平台上执行系统调用所需的基本功能。

所有函数均标记为不安全,并且不对参数或返回值进行验证。

所有参数和返回值都使用最基本可能的类型,结果包装在 Result 中。例如,所有参数都是 usize,在 x86_64-linux 上的返回值是 Result<usize, usize>。所有参数都必须转换为此基本类型,并由调用者确定结果表示什么。

目的是提供一个最小化且无额外开销的稳定基础,以构建更高级别的库。

x86_64-linux 示例

    use raw_syscall_base::{syscall, syscall_nr};
    
    // attempts to write "hello" to STDOUT
    pub unsafe fn hello() -> usize {
        syscall(1, &[1, b"hello" as *const u8 as usize, 5])
    }

    // exits the program with a success code 
    pub unsafe fn exit_success() -> ! {
        syscall_nr(231, &[0])
    }

无运行时依赖项