net_rx_action及ptype_all的问题
BBS 水木清华站 -- 文章阅读 [讨论区: KernelTech][分类讨论区] [返回版面] [返回文摘区] [快速返回]
--------------------------------------------------------------------------------
发信人: [email protected] (不变天), 信区: KernelTech
标题: net_rx_action的问题
发信站: Ncnipc_BBS (Fri Jan 18 17:50:37 2002)
转信站: SMTH!thunews.dhs.org!news.happynet.org!NcnipcBBS
这里一段,看来看去,如果ptype_all里面只有一个packet_type的话,就不执行?
//但是我用module的办法试过了,
//在ptype_all链表只有一个packet_type的时候,
//这个packet_type的func是能够获得skb的,怎么回事?
-----------
pt_prev = NULL;
for (ptype = ptype_all; ptype; ptype = ptype->next) {
if (!ptype->dev || ptype->dev == skb->dev) {
if (pt_prev) { //就是这里,第一次的时候显然是NULL呀
if (!pt_prev->data) {
deliver_to_old_ones(pt_prev, skb, 0);
} else {
atomic_inc(&skb->users);
pt_prev->func(skb,
skb->dev,
pt_prev);
}
}
pt_prev = ptype;
}
}
--
※ 来源:·Ncnipc BBS bbs.nipc.org.cn·
--------------------------------------------------------------------------------
[分类讨论区] [返回版面] [返回文摘区] [快速返回] 看看 deliver_to_old_ones 函数里面有调用。 第一次时候是根本不会进入
if (!pt_prev->data) {
deliver_to_old_ones(pt_prev, skb, 0);
} else {
atomic_inc(&skb->users);
pt_prev->func(skb,
skb->dev,
pt_prev);
}
这段代码的呀
页:
[1]