#bpf #bindings #kernel #idiomatic #collection #compiler #goal

bcc

针对 BPF 编译器集合 (BCC) 的 Rust 风格绑定

33 个版本

0.0.34 2023年10月25日
0.0.33 2022年9月9日
0.0.32 2021年11月24日
0.0.31 2021年3月30日
0.0.3 2018年2月8日

#194 in 开发工具

Download history 877/week @ 2024-04-27 1822/week @ 2024-05-04 1635/week @ 2024-05-11 1562/week @ 2024-05-18 807/week @ 2024-05-25 712/week @ 2024-06-01 482/week @ 2024-06-08 547/week @ 2024-06-15 417/week @ 2024-06-22 600/week @ 2024-06-29 502/week @ 2024-07-06 508/week @ 2024-07-13 571/week @ 2024-07-20 573/week @ 2024-07-27 451/week @ 2024-08-03 554/week @ 2024-08-10

2,212 每月下载量
用于 2 crates

MIT 许可证

150KB
4K SLoC

rust-bcc

警告!未维护!

随着 Rust 生态系统其他 BPF Crates 的进步,这个 crate 已不再积极维护。我们建议采用 libbpf-rs

关于

针对 BPF 编译器集合的 Rust 风格绑定。目标是模仿 https://github.com/iovisor/bcc 中的 Python BCC 绑定。

C bcc API(在 bcc-sys 中暴露)非常强大,但单独使用它并安全地管理它分配的所有资源相当复杂。

此 crate 目前为实验性,其中包含一些不安全或不太符合 Rust 风格的内容。非常欢迎拉取请求。

先决条件

  • bcc v0.4.0-v0.23.0

静态链接

此 crate 允许静态链接 libbpf/libbcc,这可以创建不依赖于目标系统上匹配版本的工具。要静态链接,您可能需要从源代码编译多个依赖项。有关如何构建这些依赖项以及如何在 CI 中构建和运行静态链接示例的信息,请参阅 build/ci.sh 脚本。

入门

了解如何使用此 crate 的最佳方式是阅读示例。这些示例最令人兴奋的地方是,Rust 版本的代码实际上并不比 Python 版本冗长。在某种程度上,Rust 代码更易读,因为与 Python 相比,在 Rust 中操作 C 数据结构更为自然。

构建

该库使用功能来支持多个版本的bcc。根据您安装的bcc版本,在构建示例时可能需要使用功能标志,以便将期望的bcc版本与系统上安装的版本相匹配。

示例

依赖

~5.5MB
~159K SLoC