BBS水木清华站∶精华区
发信人: menschen (阿中), 信区: Linux
标 题: Re: 看过源码的高手解释一下?
发信站: BBS 水木清华站 (Thu Dec 14 19:02:23 2000)
很久以前看过,现在印象不深了。大致说一下吧。
skb->end是个指针,指向数据的末端,我觉得这里是一个
skb实际数据的引用计数,每clone一次,该计数加1。
数据区释放的条件是,或者skb没有被clone,或者clone了,
引用计数为0,这段代码讲得就是这个意思。
【 在 lightofstar (star) 的大作中提到: 】
∶ void kfree_skbmem(struct sk_buff *skb)
∶ {
∶ if (!skb->cloned || atomic_dec_and_test(skb_datarefp(skb)))
∶ kfree(skb->head);
∶ kmem_cache_free(skbuff_head_cache, skb);
∶ atomic_dec(&net_skbcount);
∶ }
∶ extern __inline__ atomic_t *skb_datarefp(struct sk_buff *skb)
∶ {
∶ return (atomic_t *)(skb->end);
∶ }
∶ ...................
--
输了你,赢了世界又如何?
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.152.15]
BBS水木清华站∶精华区