《TCP/IP详解 卷2:实现》 —2.5.3 m_retry函数

举报
华章计算机 发表于 2019/11/20 16:24:29 2019/11/20
【摘要】 本节书摘来自华章计算机《TCP/IP详解 卷2:实现》一书中第2章,第2.5.3节,作者是[美]加里R.赖特(Gary R.Wright),W. 理查德史蒂文斯(W.Richard Stevens),陆雪莹 蒋慧 等译 谢希仁 校。

2.5.3   m_retry函数

图2-13所示的是m_retry函数。

image.png

图2-13   m_retry函数

92-97   被m_retry调用的第一个函数是m_reclaim。在7.4节我们会看到每个协议都能定义一个“释放”(drain)函数,在系统缺乏可用存储器时能被m_reclaim调用。在图10-32中我们还会发现当IP的释放函数被调用时,所有等待重新组成IP数据报的IP分片被丢弃。TCP的释放函数什么都不做,而UDP甚至就没有定义释放函数。

98-102   因为在调用了m_reclaim后有可能得到更多的存储器,所以再次调用宏MGET,试图获得mbuf。在展开宏MGET(图2-12)之前,m_retry被定义为一个空指针。这可以防止当存储器仍然不可用时的无休止循环:这个MGET展开会把m设置为空指针而不是调用m_retry函数。在MGET展开以后,这个m_retry的临时定义就被取消了,以防在此之后有对MGET的其他引用。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。