求问pskb_may_pull
static inline int pskb_may_pull(struct sk_buff *skb, unsigned int len){
if (likely(len <= skb_headlen(skb)))
return 1;
if (unlikely(len > skb->len))
return 0;
return __pskb_pull_tail(skb, len-skb_headlen(skb)) != NULL;
}
什么情况才能执行到return __pskb_pull_tail(skb, len-skb_headlen(skb)) != NULL; 本帖最后由 jiufei19 于 2014-04-07 21:26 编辑
回复 1# 黎明748
要执行那一句,则代码上看,就是要求被测试的那个len满足如下条件
1、len比此skb的主buffer区域的数据大,且
2、len又要小于或等于此skb的数据总长度
因此,换句话讲,就是满足:len比skb的主buffer大且小于或等于skb的总长度。而一个skb的数据可能包括3个部分:主buffer区、page区、frag_list区 谢谢回复 2# jiufei19
页:
[1]