#linux-kernel #linux #bindings #operating-system #operating #ffi

no-std linux-rust-bindings

Rust 对 Linux 内核结构的封装

4 个版本

0.1.3 2023年12月13日
0.1.2 2023年12月7日
0.1.1 2023年7月23日
0.1.0 2023年7月23日

#503操作系统 类别

Download history 18/week @ 2024-03-11 3/week @ 2024-03-18 14/week @ 2024-03-25 33/week @ 2024-04-01 13/week @ 2024-04-08 54/week @ 2024-04-15 29/week @ 2024-04-22 31/week @ 2024-04-29 10/week @ 2024-05-06 10/week @ 2024-05-13 18/week @ 2024-05-20 15/week @ 2024-05-27 15/week @ 2024-06-03 15/week @ 2024-06-10 24/week @ 2024-06-17 22/week @ 2024-06-24

每月 下载量 77
6 个 crate 中使用 (通过 rusl)

MPL-2.0 许可证

195KB
5.5K SLoC

直接从 Linux 源码生成的 Rust 绑定

仅包含常量,因为据我所知,从内核直接调用函数只有一种方式,那就是通过 vDSO,通过 syscall API 通信所需的常量已生成。

生成的代码根据内核头文件分为特性,例如 fcntl.h 中的结构体在特性 #[cfg(feature = "fcntl)] 下,等等。

获取源代码

git内核存档 或其他地方获取。

从架构生成 nolibc

[<Linux 源代码根目录>/工具/include/nolibc]makeARCH=<架构-linux> OUTPUT=<这里>/include-kernel-headers/<架构>/headers_standalone.
<Linux source root> 是 Linux 源代码安装的位置。
<arch-linux> 是 Linux 对架构的命名,aarch64 是这里的 arm64
<here> 是此仓库的根目录 <arch> 是 rust 对架构的表示,即 64 位 arm 是 aarch64

将生成内核头文件,请注意,它们根据 LGPLMIT 许可证授权。

许可证

此项目根据 MPL-2.0 许可证授权,请参阅许可证

无运行时依赖

特性