驱动内核:kfree_skb

kfree_skb()释放一个SKB的步骤: 

1)kfree_skb()检测sk_buff结构的引用计数users,如果不为1,则说明此次释放后该SKB还将被用户占用, 
因此递减引用计数users后即返回;否则说明不再有其他用户占用该sk_buff结构,调用__kfree_skb()释放之。 

2)SKB描述符中包含一个dst_entry结构的引用,在释放SKB后,会调用dst_release()来递减dst_entry结构的引用计数。 

3)如果初始化了SKB的析构函数,则调用相应的函数。 

4)一个SKB描述符是与一个存有真正数据的内存块,即数据区相关的。如果存在聚合分散I/O数据, 
该数据区底部的skb_shared_info结

posted on 2021-01-10 02:06  lydstory  阅读(777)  评论(0)    收藏  举报

导航