![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux-kernel
文章平均质量分 84
longxj04
这个作者很懒,什么都没留下…
展开
-
linux-kernel 3.5.3Tcp系统调用,源码分析1-宏SYSCALL_DEFINE
TCP建立socket的第一步,是调用socket函数,先看socket函数的实现。 socket系统调用调用sys_socketcall, 最终会调用sys_socket函数(这部分后续需要补充完整的跟踪过程) sys_socket的实现在socket.c中,但是在3.5.3的内核源码中已经找不到这个函数了。这个函数的定义是下面这个SYSCALL_DEFINE3(socket, int, f原创 2012-09-11 20:28:30 · 2049 阅读 · 0 评论 -
linux-kernel 3.5.3Tcp系统调用,源码分析2-sys_socket & sock_create
sys_socket的实现: SYSCALL_DEFINE3(socket, int, family, int, type, int, protocol) (前面已经说过这个宏最终会展开为sys_socket(int family, int type, int protocol)) { int retval; struct socket *sock; int flags; /* 这部原创 2012-09-12 20:42:10 · 2370 阅读 · 0 评论 -
linux-kernel 3.5.3Tcp系统调用,源码分析3-inet_create
在创建socket时,会调用每个协议族family来初始化创建的socket,其中常用的ipv4,最终调用的inet_create: static int inet_create(struct net *net, struct socket *sock, int protocol, int kern) { struct sock *sk; struct inet_protos原创 2012-09-18 21:58:04 · 1774 阅读 · 0 评论 -
linux-kernel 3.5.3Tcp系统调用,源码分析4-inet_init
inet_init是ipv4的初始化函数,在系统初始化的时候会调用(在哪里?) /* #define __init __attribute__ ((__section__ (".init.text"))) __cold 简单来说是指示gcc把标记的数据或者函数放到指定sector。 linux中把一些启动及初始化时候用的数据用__init标识,然后在适当的时候把它们释放,回收原创 2012-09-20 09:24:47 · 1705 阅读 · 0 评论 -
linux-kernel 3.5.3Tcp系统调用,源码分析5-原子操作
linux的原子操作实现,首先是基本数据结构的定义 typedef struct { int counter; } atomic_t; 操作集 #define atomic_dec_return(v) atomic_sub_return(1, (v)) #define atomic_inc_return(v) atomic_add_return(1, (v)) #define a原创 2012-09-20 09:25:19 · 792 阅读 · 0 评论 -
linux-kernel 3.5.3Tcp系统调用,源码分析6-bind系统调用
服务器端在调用socket系统调用后,初始化地址,就调用bind系统调用了,socket系统调用创建了一个socket_alloc,这个结构一个是inode,一个是socket,对这2个结构进行了初始化,尤其是初始化了socket结构中的sock结构。 bind函数最终调用的是 /* * Bind a name to a socket. Nothing much to do here原创 2012-09-25 17:23:57 · 921 阅读 · 0 评论 -
linux-kernel 3.5.3Tcp系统调用,源码分析7-listen系统调用
to do原创 2012-11-28 20:55:06 · 492 阅读 · 0 评论