7 个稳定版本
5.0.5 | 2024年5月30日 |
---|---|
5.0.4 | 2024年5月27日 |
5.0.3 | 2023年5月17日 |
5.0.2 | 2023年4月23日 |
4.0.0 | 2023年4月20日 |
#132 in Unix APIs
293 下载/月
用于 2 crates
395KB
10K SLoC
为 Linux 的 perf_event_open
系统调用提供直接的、不安全的 Rust 绑定
此 crate 导出 Rust 包装器,用于访问 Linux 系统调用的性能监控计数器和跟踪功能。这包括
- 处理器的性能监控寄存器
- 用于上下文切换和页面错误的内核计数器
- 内核跟踪点、kprobe 和 uprobes
- 处理器的跟踪功能,如 Intel 的分支跟踪存储 (BTS)
- 硬件断点
此 crate 提供
- Linux 的
perf_event_open
系统调用的 Rust 包装器 - 对
perf_event_open
返回的文件描述符可应用的 ioctls 的 Rust 包装器 - 为
perf_event_open
的相关头文件提供绑定,由bindgen
自动生成
所有函数都是对底层调用的直接、不安全的包装器。它们操作原始指针和原始文件描述符。
有关基本功能的类型安全 API,请参阅 perf-event2 crate。
在其他平台上使用 perf 类型
尽管 Windows 和 Mac 没有提供 perf_event_open
系统调用,但 perf_event_open_sys
库仍然可以在这些平台上构建:模块 bindings
中的类型定义对需要解析 Linux 或 Android 系统上产生的 perf 相关数据的代码来说很有用。系统调用和 ioctl 包装函数不可用。
更新系统调用绑定
模块 bindings
定义了 Rust 对 Linux perf_event_open
系统调用及其相关 ioctl 的类型和常量的等价物。这些是从内核的 C 头文件中自动生成的,使用了 bindgen。接口和底层功能都非常复杂,并且以稳定的速度添加新功能。要更新生成的绑定
-
运行同一目录下的
regenerate.sh
脚本。这将运行 bindgen,并将输出拼接入bindings
模块的源代码中,保留文档。 -
如果这导致了 API 的任何更改,则根据需要更新库的主要或次要版本。大多数内核头文件的更新实际上不会影响 API,即使那些确实影响 API 的更新可能也不需要新的主要版本。
您可以使用
cargo-semver-checks
来验证生成的更改是否与 semver 兼容。