GCC sasa inajumuisha maelezo ya nyuma kwa ajili ya kukusanywa kwa eBPF

Imejumuishwa katika kitengo cha mkusanyaji wa GCC iliyopitishwa msimbo wa kuandaa programu za mkalimani wa bytecode iliyojengwa kwenye kinu cha Linux eGMP. Shukrani kwa utumiaji wa mkusanyiko wa JIT, kernel bytecode inatafsiriwa kwa kuruka hadi kwenye maagizo ya mashine na kutekelezwa kwa utendakazi wa nambari asilia. Viraka vilivyo na usaidizi wa eBPF kukubaliwa kwa tawi ambalo toleo la GCC 10 linatengenezwa.

Kando na mandharinyuma ya utengenezaji wa bytecode, GCC inajumuisha mlango wa libgcc wa eBPF na zana za kutengeneza faili za ELF ambazo hurahisisha kutekeleza msimbo katika mashine pepe ya eBPF kwa kutumia vipakiaji vilivyotolewa na kernel. Viraka vya kusaidia eBPF katika GCC vilitayarishwa na wahandisi kutoka Oracle, ambao walikuwa tayari zinazotolewa Usaidizi wa eBPF katika binuti za GNU. Kiigaji na viraka vya GDB pia vinatengenezwa, ambavyo vitakuruhusu kutatua programu za eBPF bila kuzipakia kwenye kernel.

Programu za eBPF zinaweza kufafanuliwa katika sehemu ndogo ya lugha C, iliyokusanywa na kupakiwa kwenye kernel. Kabla ya utekelezaji, mkalimani wa eBPF huangalia bytecode kwa matumizi ya maagizo yaliyoruhusiwa na anaweka sheria fulani kwenye kanuni (kwa mfano, hakuna vitanzi).
Hapo awali, zana zenye msingi wa LLVM zilitumiwa kukusanya eBPF kwenye Linux. Usaidizi wa eBPF katika GCC ni wa kuvutia kwa sababu hukuruhusu kutumia zana moja kuunda programu za Linux kernel na eBPF, bila kusakinisha vitegemezi zaidi.

Katika mfumo wa programu za eBPF, unaweza kuunda vidhibiti vya utendakazi wa mtandao, trafiki ya chujio, kudhibiti kipimo data, kufuatilia mifumo, kukata simu za mfumo, kudhibiti ufikiaji, kuhesabu marudio na wakati wa operesheni, na kutekeleza ufuatiliaji kwa kutumia kprobes/uprobes/tracepoints.

Chanzo: opennet.ru

Kuongeza maoni