Incluído no conxunto de compiladores GCC
Ademais dun backend para a xeración de bytecode, GCC inclúe un porto libgcc para eBPF e ferramentas para xerar ficheiros ELF que permiten executar código na máquina virtual eBPF mediante cargadores proporcionados polo núcleo. Os parches para soportar eBPF en GCC foron preparados por enxeñeiros de Oracle, que xa o tiñan
Os programas para eBPF pódense definir nun subconxunto da linguaxe C, compilarse e cargarse no núcleo. Antes da execución, o intérprete eBPF verifica o bytecode para ver o uso de instrucións permitidas e impón certas regras ao código (por exemplo, sen bucles).
Inicialmente, utilizáronse ferramentas baseadas en LLVM para compilar eBPF en Linux. O soporte eBPF en GCC é interesante porque permite usar un kit de ferramentas para construír o kernel de Linux e os programas eBPF, sen instalar dependencias adicionais.
En forma de programas eBPF, pode crear controladores de operacións de rede, filtrar o tráfico, xestionar o ancho de banda, supervisar sistemas, interceptar chamadas ao sistema, controlar o acceso, contar a frecuencia e o tempo das operacións e realizar o rastrexo mediante kprobes/uprobes/tracepoints.
Fonte: opennet.ru