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(),

Другие вопросы по тегам