|
小弟现在需要用pf_ring来提高linux抓包性能(用于ARM开发板上,Linux 2.6.23.1),千辛万苦把pf_ring.ko(一内核模块)编译出来之后,一insmod,就导致板子重启,后来我一个个函数排查,发现是dev_add_pack()出问题了,因为当我把它注释掉之后加载卸载都没问题,当然,这个一注释掉需要的功能就没有了。下面我贴一下调用dev_add_pack()的代码和其本身的代码:
void register_device_handler(void) {
if(transparent_mode != standard_linux_path) return;
prot_hook.func = packet_rcv;
prot_hook.type = htons(ETH_P_ALL);
dev_add_pack(&prot_hook);
}
void dev_add_pack(struct packet_type *pt)
{
int hash;
spin_lock_bh(&ptype_lock);
if (pt->type == htons(ETH_P_ALL))
list_add_rcu(&pt->list, &ptype_all);
else {
hash = ntohs(pt->type) & 15;
list_add_rcu(&pt->list, &ptype_base[hash]);
}
spin_unlock_bh(&ptype_lock);
}
希望高手指点一下这是什么原因,小弟在此谢过! |
|