ယခု GCC တွင် eBPF ကို စုစည်းရန်အတွက် နောက်ကွယ်တစ်ခုပါရှိသည်။

GCC compiler suite တွင် ပါဝင်သည်။ လက်ခံခဲ့သည် Linux kernel တွင်တည်ဆောက်ထားသော bytecode စကားပြန်အတွက် ပရိုဂရမ်များစုစည်းခြင်းအတွက်ကုဒ် eGMP. JIT စုစည်းမှုကို အသုံးပြုခြင်းကြောင့်၊ kernel bytecode ကို စက်ညွှန်ကြားချက်များအဖြစ် ပျံသန်းပြီး မူရင်းကုဒ်၏ စွမ်းဆောင်ရည်ဖြင့် လုပ်ဆောင်ပါသည်။ eBPF ပံ့ပိုးမှုဖြင့် ပြင်ဆင်မှုများ လက်ခံတယ်။ GCC 10 ထုတ်ဝေမှုကို တီထွင်ထားသည့် ဌာနခွဲသို့။

bytecode မျိုးဆက်အတွက် နောက်ကွယ်တစ်ခုအပြင်၊ GCC တွင် eBPF အတွက် libgcc အပေါက်တစ်ခု နှင့် ELF ဖိုင်များကို ထုတ်လုပ်ရန်အတွက် ကိရိယာများ ပါ၀င်ပြီး kernel-provided loaders များကို အသုံးပြု၍ eBPF virtual machine တွင် ကုဒ်ကို လုပ်ဆောင်နိုင်စေပါသည်။ GCC ရှိ eBPF ကို ပံ့ပိုးရန် Patches များကို Oracle မှ အင်ဂျင်နီယာများက ပြင်ဆင်ပေးခဲ့ပါသည်။ ပေးထားသည်။ GNU binutils တွင် eBPF ပံ့ပိုးမှု။ GDB အတွက် simulator နှင့် ဖာထေးမှုများသည် ဖွံ့ဖြိုးတိုးတက်ဆဲဖြစ်ပြီး၊ ၎င်းတို့ကို kernel ထဲသို့မထည့်ဘဲ eBPF ပရိုဂရမ်များကို အမှားရှာပြင်နိုင်စေမည်ဖြစ်သည်။

eBPF အတွက် ပရိုဂရမ်များကို C ဘာသာစကား၏ အစုအဝေးတစ်ခုတွင် သတ်မှတ်နိုင်ပြီး၊ စုစည်းပြီး kernel ထဲသို့ တင်နိုင်သည်။ မလုပ်ဆောင်မီ၊ eBPF စကားပြန်သည် ခွင့်ပြုထားသော ညွှန်ကြားချက်များကို အသုံးပြုခြင်းအတွက် bytecode ကို စစ်ဆေးပြီး ကုဒ်ပေါ်တွင် အချို့သော စည်းမျဉ်းများ ချမှတ်သည် (ဥပမာ၊ loops မရှိပါ)။
အစပိုင်းတွင်၊ LLVM-based ကိရိယာများကို Linux တွင် eBPF စုစည်းရန် အသုံးပြုခဲ့သည်။ GCC ရှိ eBPF ပံ့ပိုးမှုသည် သင့်အား အပိုမှီခိုမှုများအား ထည့်သွင်းခြင်းမရှိဘဲ Linux kernel နှင့် eBPF ပရိုဂရမ်များကို တည်ဆောက်ရန် ကိရိယာအစုံအလင်တစ်ခုကို အသုံးပြုခွင့်ပေးသောကြောင့် စိတ်ဝင်စားစရာကောင်းပါသည်။

eBPF ပရိုဂရမ်ပုံစံဖြင့် သင်သည် ကွန်ရက်လည်ပတ်မှုကိုင်တွယ်ကိရိယာများကို ဖန်တီးခြင်း၊ အသွားအလာစစ်ထုတ်ခြင်း၊ ဘန်းဝဒ်ကို စီမံခြင်း၊ မော်နီတာစနစ်များ၊ စနစ်ခေါ်ဆိုမှုများကို ကြားဖြတ်ရယူခြင်း၊ ဝင်ရောက်ထိန်းချုပ်ခြင်း၊ ကြိမ်နှုန်းနှင့် လုပ်ဆောင်မှုအချိန်ကို ရေတွက်နိုင်ပြီး kprobes/uprobes/tracepoints များကို အသုံးပြု၍ ခြေရာခံနိုင်သည်။

source: opennet.ru

မှတ်ချက် Add