Android培训班(111)start_kernel函数8

/*

* HACK ALERT! This is early. We're enabling the console before

* we've done PCI setups etc, and console_init() must be aware of

* this. But we do want output early, in case something goes wrong.

*/

console_init();

这个函数是用来初始化控制台,从这个函数之后就可以输出内容到控制台了。在这个函数初化之前,都没有办法输出内容,就是输出,也是写到输出缓冲区里,缓存起来,等到这个函数调用之后,就立即输出内容。



if(panic_later)

panic(panic_later,panic_param);

这段代码是判断分析输入的参数是否出错,如果有出错,就启动控制台输出之后,立即打印出错的参数,以便用户立即看到出错的地方。


lockdep_info();

这个函数是打印锁的依赖信息,用来调试锁。通过这个函数可以查看目前锁的状态,以便可以发现那些锁产生死锁,那些锁使用有问题。


/*

* Need to run this when irqs are enabled, because it wants

* to self-test [hard/soft]-irqs on/off lock inversion bugs

* too:

*/

locking_selftest();

这个函数是用来测试锁的API是否使用正常,进行自我测试。比如测试自旋锁、读写锁、一般信号量和读写信号量。


#ifdefCONFIG_BLK_DEV_INITRD

if(initrd_start && !initrd_below_start_ok &&

page_to_pfn(virt_to_page((void *)initrd_start)) < min_low_pfn){

printk(KERN_CRIT"initrd overwritten (0x%08lx < 0x%08lx) - "

"disabling it.\n",

page_to_pfn(virt_to_page((void *)initrd_start)),

min_low_pfn);

initrd_start= 0;

}

#endif

这段代码是要支持初始RAM 磁盘,内核必须要使用CONFIG_BLK_DEV_RAM CONFIG_BLK_DEV_INITRD 选项进行编译。


vmalloc_init();

这个函数是用来初始化虚拟内存,主要设置虚拟内存表,以便后面可以使用。



vfs_caches_init_early();

这个函数是虚拟文件系统的缓存初始化。


cpuset_init_early();

这个函数是初始化CPU集合的内存分配变量,以便任务的内存分配与CPU集合进行比较,如果两者不一样,就更新任务的内存允许分配的内存大小。

你可能感兴趣的:(android,测试,任务,output,bugs,磁盘)