关于ptype_all和pypte_base中的pt_prev的说明[转]

2020-05-25 00:00:00 函数 代码 调用 复制 释放

  看见noble_shi兄弟"关于net_rx_action函数的若干问题"贴中关于pt_prev的问题, 本来想在论坛上找到一个相关的帖子的链接告诉他。但是发现咱们论坛上关于pt_prev的讨论要么没有说明,要么理解的偏差,甚至是错误。而且关于pt_prev的提问很多。故写了以下内容。

不过本人水平有限,难免说错。请执教getmoon@163.com

结论:pt_prev使用的原因是为了减少一次kfree_skb的调用,提高效率。

如果有异议的请往下看。如果你对skb非常了解,那么请直接看<三>, 否则请一步一步往下看。

<一>相关知识
在讲pt_prev的作用之前, 咱们先说明以下的东西。
(1)alloc_skb中初始化skb->users计数为1。

  1. struct sk_buff( ) 

  2. .... 
  3.     atomic_set(&skb->users, 1); 
  4. ... 

相关文章