https://github.com/torvalds/linux/blob/33920f1ec5bf47c5c0a1d2113989bdd9dfb3fae9/include/linux/filter.h#L556-L571 это реализация резервного интерпретатора ebpf?
Реализует ли BPF_PROG_RUN резервный интерпретатор ebpf?
Ответы (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