GCC kompilyatorlar to'plamiga kiritilgan
Bayt-kod yaratish uchun backendga qo'shimcha ravishda, GCC eBPF uchun libgcc portini va yadro tomonidan taqdim etilgan yuklagichlar yordamida eBPF virtual mashinasida kodni bajarishga imkon beruvchi ELF fayllarini yaratish vositalarini o'z ichiga oladi. GCCda eBPF-ni qo'llab-quvvatlash uchun yamoqlar allaqachon ega bo'lgan Oracle muhandislari tomonidan tayyorlangan
eBPF uchun dasturlar C tilining kichik to'plamida aniqlanishi, kompilyatsiya qilinishi va yadroga yuklanishi mumkin. Amalga oshirishdan oldin, eBPF tarjimoni ruxsat etilgan ko'rsatmalardan foydalanish uchun bayt kodini tekshiradi va kodga ma'lum qoidalarni qo'yadi (masalan, tsikllar yo'q).
Dastlab, Linuxda eBPF kompilyatsiya qilish uchun LLVM-ga asoslangan vositalar ishlatilgan. GCCda eBPF-ni qo'llab-quvvatlash qiziqarli, chunki u qo'shimcha bog'liqliklarni o'rnatmasdan, Linux yadrosi va eBPF dasturlarini yaratish uchun bitta asboblar to'plamidan foydalanishga imkon beradi.
eBPF dasturlari ko'rinishida siz tarmoq operatsiyalari ishlov beruvchilarini yaratishingiz, trafikni filtrlashingiz, tarmoqli kengligini boshqarishingiz, tizimlarni kuzatishingiz, tizim qo'ng'iroqlarini ushlab turishingiz, kirishni boshqarishingiz, operatsiyalarning chastotasi va vaqtini hisoblashingiz, kprobes/uprobes/tracepoints yordamida kuzatishni amalga oshirishingiz mumkin.
Manba: opennet.ru