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水木清华站∶精华区