网络子系统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 cache
	peer_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);
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值