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
43KB
1K SLoC
raw-syscall-base
低级系统调用。
用法
将以下内容添加到您的 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])
}