我知道eBPF
程序可以固定到/sys/fs/bpf
(默认位置为小bpffs
。例如,使用bpftool
:
$ bpftool prog load ./my_bpf.o /sys/fs/bpf/my_bpf
我原以为open("/sys/fs/bpf/my_bpf")
会返回内核为my_bpf
分配的文件描述符的值。但open()
调用失败,我认为它会返回-EINVAL
。
在这种情况下,钉扎的目的是什么?我如何正常获得BPF程序的fd
,因为它可能有很多当前加载的程序。我知道libbpf
允许从fd
检索id
,但如果我没有id
该怎么办?
答案 0 :(得分:2)
bpf(BPF_OBJ_GET, …)
中的 bpf_obj_get()
返回固定对象的fd
。固定对象的路径是bpf_obj_get()
的参数。