1. 程式人生 > 其它 >ebp:如何完成型別的訪問,如果型別變了會怎麼辦

ebp:如何完成型別的訪問,如果型別變了會怎麼辦

bpf程式是如何控制記憶體型別的訪問

bpf_probe_read

試著把型別轉化的部分,換成一個核心不識別的函式,看下下編譯和執行是否都能正確地進行~

把核心中samples/bpf中的tracex1_kern.c中的
skb = (struct sk_buff*) PT_REGS_PARM1(ctx);
中的sk_buff替換成一種別的結構體 net_device,然後在編譯的時候,會出現這種錯誤:結構體的結構體的解析是按照;【問題:執行時的檢查是什麼樣子的
samples/bpf/tracex1_kern.c:32:6: warning: incompatible pointer types assigning to 'struct sk_buff *'
      from 'struct net_device *' [-Wincompatible-pointer-types]
        skb = (struct net_device*) PT_REGS_PARM1(ctx);
            ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.

 

執行時的檢查會是什麼樣子的,bpf會記錄這個核心結構體是什麼東西,然後在真正執行的時候,會去檢查核心結構體中的size是不是,核心中是記錄著結構體的資訊,是在dwarf裡面吧?然後也會記錄著這個地方是用的哪個資料結構,在執行的時候,會去檢查實際訪問這個地址是否是合法的,