GCC nun inkluzivas backend por kompilo al eBPF

Inkludita en la GCC-kompila serio akceptita kodo por kompili programojn por la bajtokoda interpretisto konstruita en la Linukso-kerno eGMP. Dank'al la uzo de JIT-kompilo, la kerna bajtokodo estas tradukita sur la flugo en maŝinajn instrukciojn kaj efektivigita kun la agado de indiĝena kodo. Flikaĵoj kun eBPF-subteno akceptis al la branĉo de kiu la GCC 10-eldono estas evoluigita.

Aldone al backend por bajtkoda generacio, GCC inkluzivas libgcc-havenon por eBPF kaj ilojn por generado de ELF-dosieroj, kiuj ebligas efektivigi kodon en la virtuala maŝino de eBPF uzante kern-provizitajn ŝargilojn. Flikaĵoj por subteni eBPF en GCC estis preparitaj de inĝenieroj de Oracle, kiuj jam havis provizita eBPF-subteno en GNU-binutils. Simulilo kaj diakiloj por GDB estas ankaŭ en disvolviĝo, kio permesos al vi sencimigi eBPF-programojn sen ŝarĝi ilin en la kernon.

Programoj por eBPF povas esti difinitaj en subaro de la C-lingvo, kompilitaj kaj ŝarĝitaj en la kernon. Antaŭ ekzekuto, la eBPF-interpretisto kontrolas la bajtkodon por la uzo de permesitaj instrukcioj kaj trudas certajn regulojn al la kodo (ekzemple, neniuj bukloj).
Komence, LLVM-bazitaj iloj estis uzitaj por kompili eBPF sur Linukso. eBPF-subteno en GCC estas interesa ĉar ĝi permesas vin uzi unu ilaron por konstrui la Linuksan kernon kaj eBPF-programojn, sen instali pliajn dependecojn.

En la formo de eBPF-programoj, vi povas krei retoperaciajn prizorgantojn, filtri trafikon, administri bendolarĝon, monitori sistemojn, kapti sistemajn vokojn, kontroli aliron, kalkuli la frekvencon kaj tempon de operacioj, kaj fari spuradon uzante kprobes/uprobes/tracepoints.

fonto: opennet.ru

Aldoni komenton