#perf-event #performance-monitoring #linux #perf #file-descriptor #unsafe-bindings #counter

perf-event-open-sys2

为 Linux 的 perf_event_open 系统调用提供不安全的直接绑定,包括相关类型和常量

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

Download history 139/week @ 2024-04-14 184/week @ 2024-04-21 183/week @ 2024-04-28 95/week @ 2024-05-05 57/week @ 2024-05-12 44/week @ 2024-05-19 352/week @ 2024-05-26 82/week @ 2024-06-02 328/week @ 2024-06-09 38/week @ 2024-06-16 132/week @ 2024-06-23 20/week @ 2024-06-30 48/week @ 2024-07-07 84/week @ 2024-07-14 1/week @ 2024-07-21 160/week @ 2024-07-28

293 下载/月
用于 2 crates

MIT/Apache

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 兼容。

依赖项