📄 00000039.htm
字号:
<HTML><HEAD> <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人: lightofstar (star), 信区: Linux <BR>标 题: 看过源码的高手解释一下? <BR>发信站: BBS 水木清华站 (Wed Dec 13 23:08:33 2000) <BR> <BR>void kfree_skbmem(struct sk_buff *skb) <BR>{ <BR> if (!skb->cloned || atomic_dec_and_test(skb_datarefp(skb))) <BR> kfree(skb->head); <BR> kmem_cache_free(skbuff_head_cache, skb); <BR> atomic_dec(&net_skbcount); <BR>} <BR> <BR>extern __inline__ atomic_t *skb_datarefp(struct sk_buff *skb) <BR>{ <BR> return (atomic_t *)(skb->end); <BR>} <BR> <BR>第一个函数调用了第二个函数,那么假如skb_cloned == 1时, <BR>什么时候才能执行 kfree(skb->head)?? <BR> <BR>skb_end本身指的是数据部分的结尾,分配sk_buff时是个定值。 <BR>调用atomic_dec_and_test处理它,能够减少数据部分的引用次数吗? <BR> <BR>当数据部分被两个sk_buff共享时,什么时候才是真正的释放了数据区? <BR> <BR>-- <BR> <BR>※ 来源:·BBS 水木清华站 smth.org·[FROM: 210.25.133.3] <BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -