![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
CentOs 7.1 源码TCP部分
樱桃诗翡雨
这个作者很懒,什么都没留下…
展开
-
SOCKET用户接口与系统调用关系
所有的socket系统调用的总入口是sys_socketcall(),在include/linux/Syscalls.h中定义其中,@param call 标识接口编号,@param args 是接口参数指针接口编号的定义在 include/uapi/linux/net.h中定义接口编号对应的参数个数在net/socket.c文件中的nargs数组中原创 2017-08-22 20:49:24 · 2347 阅读 · 0 评论 -
socket API接口(1)- 整体流程
socket系统调用的定义在net/socket.c中,如下:socket的内核实现大致调用流程如下:1367~1371 是一段编译时校验的代码,在include/linux/bug.h中定义,具体如下:其作用是在编译的时候如果condition为真,则编译中断。即:如果condition为真则!condi原创 2017-09-03 08:15:05 · 1238 阅读 · 0 评论 -
socket API接口(2)- socket_create
socket_create () 在net/socket.c中,如下:1239~1268 都是一些校验性的,没有太大的疑问1270~1280 是为socket分配内存。1282~1313 是协议的初始化。大家搜1296行的 net_families,会发现它是一个长度为NPROTO的一维数组指针,但是却没有地方赋值。其定义在net/socket.原创 2017-09-08 21:44:52 · 2754 阅读 · 0 评论 -
SOCKET用户接口与系统调用关系(2)
上一节中讲述了socket调用的总入口sys_socketcall的宏定义形式,该定义形式还广泛用于其他接口API。现在我们来看看sys_socketcall的实现方式。在net/socket.c 中,sys_socketcall的实现如下:2465~2466 API序号鉴定,需要在socket 接口调用范围内。2468~2470 根据API序号取得该API的参数个原创 2017-09-03 07:23:04 · 431 阅读 · 0 评论 -
TCP/IP网络创想
很想深入理解TCP/IP,想阅读内核源码,但是不知道阅读源代码有什么用?如果真的只是开发,可能搞清楚API或许就好了,为什么要阅读源代码呢?若要想排查问题的时候有帮助,熟悉机制就好,为什么要阅读源码呢?原因就是我想读代码!想知道如何实现的!仅此而已!原创 2017-08-20 20:15:02 · 382 阅读 · 0 评论 -
socket module的内核初始化流程
总体说来有这么几个过程:1. 由core_initcall宏修饰的sock_init2. 由fs_initcall宏修饰的inet_init3. 由subsys_initcall宏修饰的net_dev_init4. 由device_initcall宏修饰的设备程序初始化且初始化顺序也是由上至下的。在net/socket.c中定义了sock_init 并且用core_原创 2017-09-28 20:50:21 · 377 阅读 · 0 评论 -
socket API接口(3)- 更深一层的解析 sock_alloc
在 net/socket.c 文件中,定义了 sock_alloc ,代码如下:上几节说过,sock_alloc 是分配inode节点和socket,并将其初始化,最后返回socket。第536行, 分配一个inode 节点,sock_mnt 是“socket module的内核初始化流程”一节中讲述的在inet_init 中注册的 sock filesystem 。原创 2017-09-30 17:28:18 · 674 阅读 · 0 评论