【发布时间】:2019-09-08 12:32:10
【问题描述】:
https://github.com/torvalds/linux/blob/33920f1ec5bf47c5c0a1d2113989bdd9dfb3fae9/include/linux/filter.h#L556-L571 这是 ebpf 后备解释器的实现吗?
【问题讨论】:
标签: c interpreter bpf ebpf
https://github.com/torvalds/linux/blob/33920f1ec5bf47c5c0a1d2113989bdd9dfb3fae9/include/linux/filter.h#L556-L571 这是 ebpf 后备解释器的实现吗?
【问题讨论】:
标签: c interpreter bpf ebpf
要完成 pchaigno 的回答:prog->bpf_func 的选择由kernel/bpf/core.c 中定义的bpf_prog_select_runtime() 完成,并在bpf_prog_load() 中调用kernel/bpf/syscall.c,即当bpf() 系统调用与@ 一起使用时987654327@命令。
选定的运行时可以是内核内解释器,如果使用 JIT,则可以是 JIT 编译的函数,或者在硬件卸载的情况下由 NIC 驱动程序编译的函数。
【讨论】:
不,BPF_PROG_RUN 调用解释器或 JITed 程序,具体取决于 prog->bpf_func 指向的内容。如果用户启用了 bpf stats,它还会更新统计信息(运行时间和 BPF 执行次数)。
【讨论】: