Linux内核初始化高端内存的过程
内核在start_kernel()函数中调用了mem_init()来做所有与内存初始化相关的工作。与初始化高端内存相关的工作在函数set_highmem_pages_init()中完成。下面我们来详细分析一下这个过程。
109 void __init set_highmem_pages_init(void)
110 {
111 struct zone *zone;
112 int nid;
113
114 for_each_zone(zone) {
115 unsigned long zone_start_pfn, zone_end_pfn;
116
117 if (!is_highmem(zone))
118 continue;
119
120 zone_start_pfn = zone->zone_start_pfn;
121 zone_end_pfn = zone_start_pfn + zone->spanned_pages;
122
123 nid = zone_to_nid(zone);
124 printk(KERN_INFO "Initializing %s for node %d(%08lx:%08lx)\n",
125 zone->name, nid, zone_star