/*
* 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集合进行比较,如果两者不一样,就更新任务的内存允许分配的内存大小。
分享到:
相关推荐
Linux内核函数Start_kernel()中调用了一系列初始化函数,以完成kernel本身的设置。这些动作有的是公共的,有的则是需要配置的才会执行的。本文介绍了在start_kernel()函数中的一些功能。
Daniel Jslin教授分析linux kernel 中的start_kernel详细过程。by the way.可以关注我在csdn上关于linux kernel的课程https://edu.csdn.net/course/detail/9089
arm linux 从入口到start_kernel 代码分析 第四部分
Arm Linux 内核的启动过程是一个复杂的过程,从POWER ON 到进入 start_kernel 函数,涉及到多个阶段和多个组件的交互。在本文中,我们将从 Arm Linux 内核的入口开始,逐步分析到进入 start_kernel 函数的过程。 一...
Linux 内核启动过程是一个复杂的过程,从 start_kernel 函数到 init 函数,这其中涉及到许多重要的知识点。下面我们将逐步解释这些知识点。 首先,我们从 start_kernel 函数开始,这个函数是 Linux 内核的主函数,...
很好的linux启动代码分析 LINUX , start_kernel , 启动代码 linux kernel 从入口到start_kernel 的代码分析.rar 104.59 KB, 下载次数: 31 , 下载积分: 资产 -2 信元, 下载支出 2 信元
arm linux 从入口到start_kernel 代码详细分析.doc
该文档描述了linux 内核内存管理部分的相关分析,从start_kernel入手,注重代码分析。
start_kernel流程图 linux2.6 内核支持两种格式的 initrd,一种是 image-initrd,其核心文件就是 /linuxrc。另外一种是cpio-initrd,使用 cpio 工具生成,其核心文件不再是 /linuxrc,而是 /init。尽管 linux2.6...
arm linux 从入口到start_kernel 代码分析 第六部分
arm linux 从入口到start_kernel 代码分析 第5部分
arm linux 从入口到start_kernel 代码分析 第7部分
arm linux 从入口到start_kernel 代码分析第三部分
第一部分从Linux系统程序入口地址_start开始直到调用start_kernel函数;第二部分从start_kernel函数开始直到使用kernel_thread函数创建init进程。 本文件的代码分析将从第二次引导,即start_kernel()开始,直到mem_...
打印机驱动 START_PLQ6_OKI5_Drvsky打印机驱动 START_PLQ6_OKI5_Drvsky打印机驱动 START_PLQ6_OKI5_Drvsky打印机驱动 START_PLQ6_OKI5_Drvsky打印机驱动 START_PLQ6_OKI5_Drvsky打印机驱动 START_PLQ6_OKI5_Drvsky...