Um backend para compilação em eBPF foi aceito no GCC

O conjunto de compiladores GCC aprovada código para compilar programas para o interpretador de bytecode integrado no kernel do Linux eBPF. Graças à aplicação da compilação JIT, o bytecode no kernel é convertido em instruções de máquina em tempo real, sendo executado com a performance de código nativo. Patches com suporte a eBPF foram aceitas na ramificação que está na base do lançamento do GCC 10.

Além do backend para geração de bytecode, o GCC inclui a porta libgcc para eBPF e ferramentas para formar arquivos ELF, que permitem executar código na máquina virtual eBPF utilizando os carregadores fornecidos pelo kernel. Patches para suporte a eBPF no GCC foram preparados por engenheiros da Oracle, que anteriormente já forneceram suporte a eBPF no GNU binutils. Um simulador e patches para GDB também estão sendo desenvolvidos, permitindo debugar programas eBPF sem carregá-los no kernel.

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 para garantir o uso de instruções permitidas e impõe certas regras sobre o código (por exemplo, a ausência de loops).
Inicialmente, a compilação de eBPF no Linux utilizava ferramentas baseadas em LLVM. O suporte a eBPF no GCC é interessante porque permite usar uma única ferramenta para construir o kernel do Linux e os programas eBPF, sem a necessidade de instalar dependências adicionais.

Na forma de programas, eBPF pode ser usado para criar manipuladores de operações de rede, filtrar tráfego, gerenciar largura de banda, monitorar o funcionamento de sistemas, interceptar chamadas de sistema, controlar acesso, contar a frequência e o tempo de execução de operações, e realizar rastreamento usando kprobes/uprobes/tracepoints.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster