加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (https://www.0531zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Linux内核--网络栈实现分析(一)--网络栈初始化--转

发布时间:2021-01-24 03:16:22 所属栏目:Linux 来源:网络整理
导读:副标题#e# 转载地址? 作者:闫明 ?本文分析基于内核Linux Kernel 1.2.13 以后的系列博文将深入分析Linux内核的网络栈实现原理,这里看到曹桂平博士的分析后,也决定选择Linux内核1.2.13版本进行分析。 原因如下: 1.功能和网络栈层次已经非常清晰 2.该版

<div class="dp-highlighter bg_cpp">
<div class="bar">
<div class="tools">
[cpp]?<a class="ViewSource" title="view plain" href="http://blog.csdn.net/geekcome/article/details/7488828"&gt;view plain<a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/geekcome/article/details/7488828"&gt;copy

?
  1. {??
  2. ??
  3. ????(i?=?0;?i?
  4. ?????????(pops[i]?!=?NULL)???
  5. ????????pops[i]?=?ops;??
  6. family?=?family;??
  7. ????????sti();??
  8. ????}??
  9. ????(-ENOMEM);??

参数中的inet_proto_ops定义如下:

<div class="dp-highlighter bg_cpp">
<div class="bar">
<div class="tools">
[cpp]?<a class="ViewSource" title="view plain" href="http://blog.csdn.net/geekcome/article/details/7488828"&gt;view plain<a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/geekcome/article/details/7488828"&gt;copy

?
  1. ????AF_INET,??
  2. ????inet_create,??
  3. ????inet_release,??
  4. ????inet_connect,??
  5. ????inet_accept,??
  6. ????inet_read,??
  7. ????inet_select,??
  8. ????inet_listen,??
  9. ????inet_recv,??
  10. ????inet_recvfrom,??
  11. ????inet_setsockopt,??
  12. ????inet_fcntl,??

其中AF_INET宏定义为2,即INET协议族号为2,后面是函数指针,INET域的操作函数。

然后

[cpp]? ?
  1. (p?=?inet_protocol_base;?p?!=?NULL;)???
  2. ?????inet_protocol?*tmp?=?(?inet_protocol?*)?p->next;??
  3. ????printk(,p->name,tmp?:);??
  4. }??
  5. ?
  6. arp_init();??
  7. ?
  8. ip_init();??

协议初始化完成后再执行dev_init()设备的初始化。

这是大体的一个初始化流程,讨论的不是很详细,后续会进行Linux内核网络栈源代码的详细分析。

(编辑:济南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读