eBPF Talk: verifier 支持有限循环
文章目录
verifier 支持有限循环后,我们不再需要 #pragma unroll
将 for
循环展开了,留给 clang 编译器决定即可。
- bpf: introduce bounded loops since 5.3 kernel.
也就是,eBPF Talk: binary search 里的 __should_delay_sip()
函数里不再需要 #pragma clang loop unroll(full)
了。
对于 for
循环套 for
循环的情况,去掉 #pragma unroll
后,编译得到的 .o 文件大小缩小了:从 75KB 缩小到 36KB。
更通用的循环
在 6.4 kernel 里,实现了更加通用的循环:
- bpf: add iterator kfuncs registration and validation logic since 6.4 kernel.
- bpf: add support for open-coded iterator loops since 6.4 kernel.
- bpf: implement numbers iterator since 6.4 kernel.
例子如下:
|
|
使用宏封装一下:
|
|
文章作者 Leon Hwang
上次更新 2024-04-03