Incluído no conjunto de compiladores GCC
Além de um backend para geração de bytecode, o GCC inclui uma porta libgcc para eBPF e ferramentas para geração de arquivos ELF que possibilitam a execução de código na máquina virtual eBPF usando carregadores fornecidos pelo kernel. Patches para suporte ao eBPF no GCC foram preparados por engenheiros da Oracle, que já haviam
Os programas para eBPF podem ser definidos em um subconjunto da linguagem C, compilados e carregados no kernel. Antes da execução, o interpretador eBPF verifica o bytecode quanto ao uso de instruções permitidas e impõe certas regras ao código (por exemplo, sem loops).
Inicialmente, ferramentas baseadas em LLVM foram usadas para compilar o eBPF no Linux. O suporte eBPF no GCC é interessante porque permite usar um kit de ferramentas para construir o kernel Linux e programas eBPF, sem instalar dependências adicionais.
Na forma de programas eBPF, você pode criar manipuladores de operação de rede, filtrar tráfego, gerenciar largura de banda, monitorar sistemas, interceptar chamadas de sistema, controlar acesso, contar a frequência e o tempo de operações e realizar rastreamento usando kprobes/uprobes/tracepoints.
Fonte: opennet.ru