eBPF: получить `fd` закрепленной программы bpf
Я знаю это 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
,
В этом случае, какова цель закрепления? Как я обычно получаю fd
программы BPF, учитывая, что в настоящее время их может быть много. я знаю это libbpf
позволяет получить fd
от id
, но что, если у меня нет id
или?
1 ответ
Решение
bpf(BPF_OBJ_GET, …)
завернут в bpf_obj_get()
в libbpf, предоставляемом ядром, возвращает fd
закрепленного объекта. Путь к закрепленному объекту является аргументом bpf_obj_get()
,