14个版本
0.5.4 | 2022年11月5日 |
---|---|
0.5.3 | 2022年11月3日 |
0.4.0 | 2022年11月2日 |
0.1.7 | 2022年10月31日 |
#770 in 编程语言
在 2 crates 中使用
92KB
2K SLoC
bpf-script
一个用于在运行时创建eBPF程序的脚本语言和编译器,无需使用bcc或llvm。
构建这个crate的目的是首先更深入地了解BPF内部,其次,提供一个无需依赖项的方式来编写BPF程序,使用高级语言,可以在运行时编译,无需将编译器壳出并从ELF文件加载/修补BPF。
该语言的语法类似于Rust,但去除了很多功能。例如,一个简单的调用辅助函数并返回值的u/k probe程序如下所示
fn(regs: &bpf_user_pt_regs_t)
a = get_current_uid_gid()
map_push_elem(queue, &a, 0)
return a
此crate旨在与以下crate一起使用,但它们不是必需的
btf
一个BTF解析库。bpf-script-derive
允许您在Rust和此编译器之间无缝共享类型。bpf-api
创建程序、探测、映射等。
用法
有关使用示例,请参阅位于 examples/ 的代码
示例 | 描述 |
---|---|
print-instructions | 编译一个简短程序并打印生成的指令 |
待办事项
- 添加控制流。
- 编写更全面的测试。
许可协议
依赖关系
~4–15MB
~136K SLoC