Реализует ли BPF_PROG_RUN резервный интерпретатор ebpf?

https://github.com/torvalds/linux/blob/33920f1ec5bf47c5c0a1d2113989bdd9dfb3fae9/include/linux/filter.h#L556-L571 это реализация резервного интерпретатора ebpf?


person Maicake    schedule 08.09.2019    source источник


Ответы (2)


Чтобы завершить ответ pchaigno: выбор для prog->bpf_func выполняется bpf_prog_select_runtime(), определенным в kernel/bpf/core.c, и вызывается в kernel/bpf/syscall.c в bpf_prog_load(), т.е. когда системный вызов bpf() используется с командой BPF_PROG_LOAD.

Выбранная среда выполнения может быть интерпретатором в ядре, функцией, скомпилированной JIT, если используется JIT, или функцией, скомпилированной JIT драйвером сетевой карты, в случае аппаратной разгрузки.

person Qeole    schedule 08.09.2019

Нет, BPF_PROG_RUN вызывает интерпретатор или JIT-программу в зависимости от того, на что указывает prog->bpf_func. Он также обновляет статистику (время выполнения и количество выполнений BPF), если пользователь включил статистику bpf.

person pchaigno    schedule 08.09.2019