13个版本 (4个主要更新)
4.0.0 | 2022年11月7日 |
---|---|
3.0.0 | 2022年7月4日 |
2.0.1 | 2022年5月31日 |
1.0.1 | 2020年8月21日 |
0.3.0 | 2019年12月21日 |
#640 in Unix API
每月下载量107,933
在87个crate中使用(直接使用5个)
250KB
6.5K 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-event crate。
在其他平台使用perf类型
尽管Windows和Mac没有perf_event_open
系统调用,但perf_event_open_sys
库仍然可以在这些平台上构建:在bindings
模块中的类型定义对需要解析Linux或Android系统生成的性能相关数据的代码很有用。系统调用和ioctl包装函数不可用。
更新系统调用绑定
bindings
模块定义了Linux perf_event_open
系统调用及其相关ioctl使用的Rust等价类型和常量。这些是通过从内核的C头文件自动生成的,使用bindgen。接口和底层功能都非常复杂,并且以稳定的速度添加新功能。要更新生成的绑定
-
运行与此
README.md
文件位于同一目录中的regenerate.sh
脚本。这会运行bindgen并将输出拼接入bindings
模块的源代码中,保留文档。 -
修复
src/lib.rs
中的注释,明确说明你从哪个内核头文件生成了绑定。 -
更新crate的主要版本。新的内核头文件版本可能向结构体添加字段,这会导致破坏性更改。(如模块文档中所述,正确编写的用户crate不应受到影响,但似乎没有必要冒
cargo update
破坏构建的风险。当用户需要从绑定中获取新功能时,他们可以更新请求的crate的主要版本号。)