為了更方便的除錯報文,需要對sk_buff的真正資料載荷進行除錯輸出,只需要在驅動中加入如下**就可以除錯了
static void qdmalib_dump_skb(struct sk_buff *skb, struct net_device *dev)
netdev_printk(kern_info, dev, "tx loopback packets(data_len = %d): \n",skb->len);
for (i = 0; i < skb->len; i++)
if(0 == i % 2)
printk("%02x", *(skb->data + i));
if(7 == i % 8)
} printk("\n");
out:
return;
}
呼叫者
int qdmalib_tx(struct sk_buff *skb, struct net_device *dev)
輸出效果
讓adb logcat列印核心除錯資訊
在預設情況下,adb logcat只能顯示使用程式的除錯資訊,我把logcat.cpp修改了一下,讓它同時可以列印核心除錯資訊 system core logcat logcat.cpp static void readloglines int logfd while 1 else if ret n...
Linux核心的列印除錯printk
printk和printf在用法上的區別在於printk可以通過附加不同的日誌級別 loglevel 訊息優先順序 通過設定日誌的輸出級別來過濾列印在控制台上的訊息。linux核心中將日誌級別分成八個級別,分別為 kern emerg 用於緊急事件,一般是系統崩潰之前的提示訊息,核心拓展數字為 0 ...
linux核心資料結構sk buff偏移正解
在網上查了好多資料,每個人都說,skb data指向的就是以太頭部的開始,然後是ip頭,再然後是傳輸層頭,payload 每個人都還說,skb len skb data len就是 以太頭長 ip頭 傳輸層頭 payload 的長度 這些資料真的是害人不淺啊!其實skb data指向的是ip頭開始的...