我想编写一个 eBPF 程序,以跟踪在单独运行的 eBPF 程序中调用的函数。另外,我想计算一下各个函数被调用的次数。
这可能吗?如果是这样,有人可以提示我可以使用什么来实现这一目标吗?
(注意:我正在寻找实现此功能(即要使用的特定 kprobe)背后的想法/概念,而不是完全开发的解决方案。)
最好,我正在寻找可以使用 pythonbcc
或bpftrace
.
更新:我想计算在 eBPF 程序中调用“用户定义”函数的次数。
例如,如果我在内核代码中创建一个 eBPF 程序:
SEC("kprobe/tcp_v4_connect")
int bpf_sample_prog(struct pt_regs *ctx) {
int x, y, ...; /* local variables to which I assign data from context */
foo(x); /* user-defined function */
bar(y); /* user-defined function */
return 0;
}
,并且我将它从用户空间代码附加到 kprobe,我希望能够使用完全独立的 eBPF 程序计算程序内部调用foo
和bar
函数的次数bpf_sample_prog
。
先感谢您。