eBPF:检索固定bpf程序的{fd`

时间:2018-02-14 16:57:45

标签: filesystems file-descriptor bpf ebpf

我知道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该怎么办?

1 个答案:

答案 0 :(得分:2)

内核提供的libbpf中包含在bpf(BPF_OBJ_GET, …)中的

bpf_obj_get()返回固定对象的fd。固定对象的路径是bpf_obj_get()的参数。