Android培训班(111)start_kernel函数8
发布日期:2021-07-01 05:09:24 浏览次数:2 分类:技术文章

本文共 1264 字,大约阅读时间需要 4 分钟。

/*

* 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集合进行比较,如果两者不一样,就更新任务的内存允许分配的内存大小。

转载地址:https://mysoft.blog.csdn.net/article/details/7858221 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:python里使用正则表达式来替换匹配成功的组并限定替换的次数
下一篇:python里使用正则表达式来替换匹配成功的组名

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月11日 19时46分17秒