《TCP/IP详解 卷2:实现》 —2.5.3 m_retry函数
【摘要】 本节书摘来自华章计算机《TCP/IP详解 卷2:实现》一书中第2章,第2.5.3节,作者是[美]加里R.赖特(Gary R.Wright),W. 理查德史蒂文斯(W.Richard Stevens),陆雪莹 蒋慧 等译 谢希仁 校。
2.5.3 m_retry函数
图2-13所示的是m_retry函数。
图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)