39次发布
0.6.18 | 2024年3月16日 |
---|---|
0.6.15 | 2023年10月11日 |
0.6.13 | 2023年6月20日 |
0.6.9 | 2023年3月23日 |
0.1.4 | 2019年10月1日 |
#29 in Unix API
4,642 个月下载
在 5 个crate 中使用
1MB
9K SLoC
syscalls
这是一个用于列出和调用原始Linux系统调用的低级库。
功能
- 为多个架构提供系统调用枚举(见下表)。
- 为多个架构提供可内联的系统调用函数(见下表)。
- 为Rustic错误处理提供
Errno
类型。 - 提供O(1)数组支持的
SysnoSet
和SysnoMap
类型。
功能标志
默认启用的功能包括std
和serde
。
std
默认情况下,启用了std
支持。如果您想在no_std
环境中编译,请使用
syscalls = { version = "0.6", default-features = false }
serde
可以使用Serde将各种类型序列化。这可以通过以下方式启用
syscalls = { version = "0.6", features = ["serde"] }
full
启用所有额外功能。
all
启用所有架构的系统调用表。如果您不需要所有架构,您可以通过如arm
、x86
、powerpc
等特性单独启用它们。请参阅下方的架构支持表以获取可用架构的完整列表。
架构支持
《枚举》列表示为该架构实现了Sysno
枚举。
《调用》列表示可以为该架构调用系统调用。
《稳定Rust?》列表示系统调用调用只需要稳定Rust。一些架构需要nightly Rust,因为内联汇编尚未针对所有架构稳定。
Arch | Enum | Invoke | Stable Rust? |
---|---|---|---|
arm * |
✅ | ✅ | 是 ✅ |
aarch64 |
✅ | ✅ | 是 ✅ |
mips |
✅ | ✅ | 无 ❌ |
mips64 |
✅ | ✅ | 无 ❌ |
powerpc |
✅ | ✅ | 无 ❌ |
powerpc64 |
✅ | ✅ | 无 ❌ |
riscv32 |
✅ | ❌† | 无 ❌ |
riscv64 |
✅ | ✅ | 是 ✅ |
s390x |
✅ | ✅ | 无 ❌ |
sparc |
✅ | ❌ | 不适用 |
sparc64 |
✅ | ❌ | 不适用 |
x86 |
✅ | ✅ | 是 ✅ |
x86_64 |
✅ | ✅ | 是 ✅ |
包含ARM thumb模式支持。
† Rust不支持riscv32 Linux目标,但如果您想冒险,则已实现syscall函数。
更新syscall列表
更新来自Linux源树中的.tbl
文件。
- 将
syscalls-gen/src/main.rs
中的Linux版本更改为最新版本。仅更新到最新稳定版本(不是候选版本)。 - 运行
cd syscalls-gen && cargo run
。这将再生src/arch/
中的syscall表。
依赖项
~0.4–1MB
~22K SLoC