网络的初试化
时间:2006-07-12 来源:xiaosuo
大雨,瓢泼般的大雨!
由于工作需要,挑挑拣拣地看了部分Linux内核的网络部分源码,不成系统,故计划系统地看一遍。放在网上,不求别的,给自己一些激励,让自己没有理由偷懒!:)
由于工作需要,挑挑拣拣地看了部分Linux内核的网络部分源码,不成系统,故计划系统地看一遍。放在网上,不求别的,给自己一些激励,让自己没有理由偷懒!:)
File: init/main.c 完成硬件的初试化后,内核从此开始执行 445 asmlinkage void __init start_kernel(void) ... ... 548 rest_init(); 549 } 391 static void noinline rest_init(void) 392 __releases(kernel_lock) 393 { 创建第一个init线程,用于系统其它部分的初试化 394 kernel_thread(init, NULL, CLONE_FS | CLONE_SIGHAND); 659 static int init(void * unused) 660 { ... ... 693 do_basic_setup(); 606 static void __init do_basic_setup(void) 607 { ... ... 617 /* Networking initialization needs a process context */ 618 sock_init(); File: net/socket.c 2039 void __init sock_init(void) 2040 { 2041 /* 2042 * Initialize sock SLAB cache. 2043 */ 2044 初试化一些网络相关的sysctl变量 2045 sk_init(); 2046 2047 #ifdef SLAB_SKB 2048 /* 2049 * Initialize skbuff SLAB cache 2050 */ 初试化用于创建socket buffer的内存缓冲 2051 skb_init(); 2052 #endif 2053 2054 /* 2055 * Initialize the protocols module. 2056 */ 2057 初试化协议模块 2058 init_inodecache(); 注册并加载socket文件系统 2059 register_filesystem(&sock_fs_type); 2060 sock_mnt = kern_mount(&sock_fs_type); 2061 /* The real protocol initialization is performed when 2062 * do_initcalls is run. 2063 */ 2064 初试化netfilter,用来初试化其hook表的链表头,创建netfilter的proc文件 系统,初试化netfiter的队列和log 2065 #ifdef CONFIG_NETFILTER 2066 netfilter_init(); 2067 #endif 2068 } File: init/main.c 执行所有的初试化调用 620 do_initcalls(); 621 } |
相关阅读 更多 +