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 scaleanimation动画,【Android动画九章】-RotateAnimation(旋转动画)和ScaleAnimation(尺寸动画)…[通俗易懂]
- android系统开机画面_Android开机画面
- android开机动画多长时间_Android开机动画原理分析
- android图片资源加密,Android平台图像文件加密
- android 空间分享到朋友圈,Android开发之微信分享到好友,朋友圈
- android 定时器实例,Android定时器和Handler用法实例分析
- Android触摸事件_wpf触摸屏点击事件
- android横竖屏切换问题
- ART 在 Android 安全攻防中的应用
- 【Android 高性能音频】AAudio 音频流 PCM 采样 的 采样 缓冲 播放 的 连续机制 ( 数据回调机制 | 数据回调函数指针 | 实现数据回调函数 | 设置数据回调函数 )
- 【Android 安装包优化】使用 lib7zr.a 静态库处理压缩文件 ( 交叉编译 lib7zr.a 静态库 | 安卓工程导入静态库 | 配置 CMakeLists.txt 构建脚本 )
- 【Android 安装包优化】Android 中使用 SVG 图片 ( 使用 appcompat 支持库兼容 5.0 以下版本的 Android 系统使用矢量图 )
- 【Android 逆向】arm 汇编 ( 使用 IDA 解析 arm 架构的动态库文件 | 分析 malloc 函数的 arm 汇编语言 )
- 【Android 逆向】函数拦截实例 ( ② 插桩操作 | 保存实际函数入口 6 字节数据 | 在插桩的函数入口写入跳转指令 | 构造拼接桩函数 )
- 【Android Gradle 插件】ProductFlavor#externalNativeBuild配置 与 AppExtension#externalNativeBuild 配置区别
- 【ijkplayer】编译 Android 版本的 ijkplayer ② ( 切换到 k0.8.8 分支 | 执行 init-android.sh 脚本进行初始化操作 )
- 【错误记录】Android Studio 中 Gradle 配置报错 ( Can‘t determine type for tag ‘<item name=““ type=“String“>)
- 【Android Gradle 插件】LintOptions 配置 ⑤ ( absolutePaths 属性配置 | check 属性配置 | checkAllWarnings 属性配置 )
- 【Android Gradle 插件】将自定义 Gradle 插件上传到自建 Maven 仓库 ④ ( 默认生成的 pom 文件 | Maven 中的 pom 配置 | 自定义 pom 文件节点 )
- [android] 采用pull解析xml文件详解手机开发
- android PakageManagerService启动流程分析详解手机开发
- Android开发艺术探索(三)——View的事件体系详解手机开发
- Android Studio 导入项目 出现安装Error:Cause: failed to find target with hash string ‘android-23’ 等错误详解手机开发
- Android斗地主游戏的牌桌实现详解编程语言
- android调试工具adb命令大全