网络子系统38_ip子系统初始化
//ip子系统初始化//调用路径inet_init->ip_init//包括路由子系统的初始化,inet_peer缓存的初始化1.1 void __init ip_init(void){dev_add_pack(&ip_packet_type);//添加l3协议处理函数ip_rt_init(); //路由子系统初始化inet_initpeers();//inet_peer缓存}//调用路径ip_init->inet_initpeers//inet_peer缓存初始化//1.每一个与linux通过inet协议交换过数据的主机,都会被认为是一个ip peer,linux为每个peer分配一个inet_peer结构。//2.inet_peer的主要目的,使不同ip使用不同的ip id生成器。//3.系统中所有的inet_peer实例组织成一课avl树,方便查找。1.2 void __init inet_initpeers(void){struct sysinfo si;//获取系统内存信息si_meminfo(&si);//系统中inet_peer数量的阀值if (si.totalram <= (32768*1024)/PAGE_SIZE)inet_peer_threshold >>= 1; /* max pool size about 1MB on IA32 */if (si.totalram <= (16384*1024)/PAGE_SIZE)inet_peer_threshold >>= 1; /* about 512KB */if (si.totalram <= (8192*1024)/PAGE_SIZE)inet_peer_threshold >>= 2; /* about 128KB *///inet_peer SLAB cachepeer_cachep = kmem_cache_create("inet_peer_cache",sizeof(struct inet_peer),0, SLAB_HWCACHE_ALIGN|SLAB_PANIC,NULL);//垃圾回收peer_periodic_timer.expires = jiffies+ net_random() % inet_peer_gc_maxtime+ inet_peer_gc_maxtime;add_timer(&peer_periodic_timer);}