了解完kernel启动以前的汇编之后我们来看看正式的c语言启动代码,也就是我们的start_kernel函数了。start_kernel相当大,里面每一个调用到的函数都足够我们伤脑筋了,我这里只是浅尝辄止的描述一下函数的功能,从而对kernel启动的过程有一个比较直观的了解。很多函数真正理解需要对linux相关体系有很深的了解,暂时没有时间深入,留待以后了。

说实话启动的代码看到现在唯一的感觉就是kernel的全局变量实在太多了,要了解一个过程跟踪一个变量的值的变化相当痛苦啊,不过耐心看下来,收获还是比较丰富的,对很多概念都有了一个比较直观的理解。闲话就不多说了,直接来上代码~~


smp_setup_processor_id();

//这个函数现在是空的;


lockdep_init();

//Runtime  locking correctness validator, see Documentation/lockdep_design.txt

debug_objects_early_init();

cgroup_init_early();

//Control group, read Documentation/cgroup.txt

local_irq_disable();

//使用arm cpsid i指令来禁止IRQ

early_boot_irqs_off();

early_init_irq_lock_class();

/* 基本上面几个函数就是初始化lockdep和cgroup,然后禁止IRQ࿰

Arm linux kernel 启动之start_kernel (一)相关推荐

  1. arm linux kernel 从入口到start_kernel 的代码分析

    Linux系统启动过程分析(主要是加载内核前的动作) 经过对Linux系统有了一定了解和熟悉后,想对其更深层次的东西做进一步探究.这当中就包括系统的启动流程.文件系统的组成结构.基于动态库和静态库的程 ...

  2. ARM linux的启动部分源代码简略分析

    ARM linux的启动部分源代码简略分析 以友善之臂的mini2440开发板为平台,以较新的内核linux-2.6.32.7版本为例,仅作说明之用. 当内核映像被加载到RAM之后,Bootloade ...

  3. ARM linux的启动部分源代码简略分析【转】

    转自:http://www.cnblogs.com/armlinux/archive/2011/11/07/2396784.html ARM linux的启动部分源代码简略分析 以友善之臂的mini2 ...

  4. arm linux内核启动过程,ARM64的启动过程之(一):内核第一个脚印

    ARM64的启动过程之(一):内核第一个脚印 作者:linuxer 发布于:2015-10-10 15:06 分类:ARMv8A Arch 一.前言 kernel的整个启动过程涉及的内容很多,不可能每 ...

  5. 【SemiDrive源码分析】【X9芯片启动流程】30 - AP1 Android Kernel 启动流程 start_kernel 函数详细分析(一)

    [SemiDrive源码分析][X9芯片启动流程]30 - AP1 Android Kernel 启动流程 start_kernel 函数详细分析(一) 一.Android Kernel 启动流程分析 ...

  6. kernel启动流程-start_kernel的执行_8.cpio initrd解包

    目录 1. 前言 2. rootfs挂载 3.populate_rootfs 4.GotName的处理 参考文档 1. 前言 本专题文章承接之前<kernel启动流程_head.S的执行> ...

  7. 简述arm linux内核启动流程,Linux内核启动过程和Bootloader(总述)

    1.Linux内核启动过程概述 一个嵌入式 Linux 系统从软件角度看可以分为四个部分:引导加载程序(Bootloader),Linux 内核,文件系统,应用程序.其中 Bootloader是系统启 ...

  8. Linux kernel启动过程

    0. 声明 kernel版本号3.10.53 1. 链接脚本 arch/arm/kernel/vmlinux.lds.S ==>vmlinux.lds 生成的链接脚本(vmlinux.lds)中 ...

  9. ARMlinux kernel 启动之start_kernel (二)

    了解完kernel启动以前的汇编之后我们来看看正式的c语言启动代码,也就是我们的start_kernel函数了.start_kernel相当大,里面每一个调用到的函数都足够我们伤脑筋了,我这里只是浅尝 ...

最新文章

  1. Java MVC框架性能比较 jsp、struts1、struts2、springmvc3 (转帖)
  2. php语言与jsp,关于开发语言之PHP JSP与ASP NET对比浅析
  3. 不要重复发明轮子:C++重用的5重境界
  4. mysql memory_MySQL MEMORY 引擎及性能比对
  5. 从方法返回Java 8的可选项时的注意事项
  6. android 6.0 dm-verity技术,Android 7.0安全性大幅提升,要求严格强制执行验证启动
  7. python读取文件内容操作_Python 3.6 读取并操作文件内容
  8. 「动手学深度学习」在B站火到没谁,加这个免费实操平台,妥妥天花板
  9. Mysql多实例实施文档
  10. sed学习笔记(1) - 入门知识
  11. Draco - glTF模型压缩利器
  12. 【完整源码】如何在BSC部署多代层级分红
  13. 开启binary log功能
  14. 2022 CCF中国软件大会(CCF Chinasoft)“CCF-华为胡杨林基金-系统软件专项”论坛成功召开...
  15. 计算机内存和磁盘的关系
  16. python pygame 简单小游戏
  17. [已解决] c#签名时出错
  18. 一般来说,联盟链相对于公有链的优势在哪里?
  19. CG原画绘画教程之人物-张聪-专题视频课程
  20. 各搜索引擎爬虫UA大全2020最新版

热门文章

  1. 计算机中的字符和字节的关系
  2. rpm 安装 忽略依赖_rpm卸载软件忽略循环依赖
  3. 这个健康问题正在困扰数千万家庭,天猫健康发起了一场公益行动
  4. Pytho学习笔记(函数,集合)
  5. u-boot (3) —— spl
  6. 联想x201i进入pe蓝屏问题
  7. 【纪念,大年三十,IP第一次被封】IP被封,没法练习。用代理?太麻烦了,教你一招简单粗暴的解决办法!!!
  8. 英雄联盟总结之客户端综述2(笔记分享)
  9. 详解Python中的setup.py
  10. HashMap不安全!!!详细分析及解决方案