v73.02 鸿蒙内核源码分析(参考手册篇) | 阅读内核源码必备工具 | 百篇博客分析OpenHarmony源码

原创
2021/12/07 17:22
阅读数 6.3K

百篇博客分析.本篇为: (参考手册篇) | 阅读内核源码必备工具

前因后果相关篇为:

工欲善其事 必先利其器

本篇尝试去摸索下鸿蒙内核毛细血管级的脉络,跟踪以下几个问题.

  • 鸿蒙有多少个结构体,结构体中每个成员变量的含义是什么?
  • 鸿蒙main长啥样,其是如何初始化各个模块的?
  • 鸿蒙的任意一个函数的调用和引用关系关系是怎样的?

它已成为众多鸿蒙内核阅读者必不可少的参考手册.

鸿蒙 main 函数长啥样

前往 >> 鸿蒙研究站 | 源码文档版块 点击函数跟踪.

/**
 * @brief 
 * 内核入口函数,由汇编调用,见于reset_vector_up.S 和 reset_vector_mp.S 
 * up指单核CPU, mp指多核CPU bl        main
 * @return LITE_OS_SEC_TEXT_INIT 
 */
LITE_OS_SEC_TEXT_INIT INT32 main(VOID)//由主CPU执行,默认0号CPU 为主CPU 
{
    UINT32 uwRet;

    uwRet = OsMain();// 内核各模块初始化
    if (uwRet != LOS_OK) {
        return LOS_NOK;
    }

    CPU_MAP_SET(0, OsHwIDGet());//设置CPU映射,参数0 代表0号CPU

    OsSchedStart();//调度开始

    while (1) {
        __asm volatile("wfi");//WFI: wait for Interrupt 等待中断,即下一次中断发生前都在此hold住不干活
    }
}

结构体/宏/枚举类型

前往 >> 鸿蒙研究站 | 查看所有结构体索引

< 任意函数关系图 | 代码实现 | 注解说明 > 三位一体

模块之间关系图

任意头文件的关系图

百篇博客分析.深挖内核地基

  • 给鸿蒙内核源码加注释过程中,整理出以下文章。内容立足源码,常以生活场景打比方尽可能多的将内核知识点置入某种场景,具有画面感,容易理解记忆。说别人能听得懂的话很重要! 百篇博客绝不是百度教条式的在说一堆诘屈聱牙的概念,那没什么意思。更希望让内核变得栩栩如生,倍感亲切.确实有难度,自不量力,但已经出发,回头已是不可能的了。 😛
  • 与代码有bug需不断debug一样,文章和注解内容会存在不少错漏之处,请多包涵,但会反复修正,持续更新,v**.xx 代表文章序号和修改的次数,精雕细琢,言简意赅,力求打造精品内容。

按功能模块:

前因后果 基础工具 加载运行 进程管理
总目录 调度故事 内存主奴 源码注释 源码结构 静态站点 参考文档 双向链表 位图管理 用栈方式 定时器 原子操作 时间管理 ELF格式 ELF解析 静态链接 重定位 进程映像 进程管理 进程概念 Fork 特殊进程 进程回收 信号生产 信号消费 Shell编辑 Shell解析
编译构建 进程通讯 内存管理 任务管理
编译环境 编译过程 环境脚本 构建工具 gn应用 忍者ninja 自旋锁 互斥锁 进程通讯 信号量 事件控制 消息队列 内存分配 内存管理 内存汇编 内存映射 内存规则 物理内存 时钟任务 任务调度 任务管理 调度队列 调度机制 线程概念 并发并行 CPU 系统调用 任务切换
文件系统 硬件架构
文件概念 文件系统 索引节点 挂载目录 根文件系统 字符设备 VFS 文件句柄 管道文件 控制台 汇编基础 汇编传参 工作模式 寄存器 异常接管 汇编汇总 中断切换 中断概念 中断管理

百万汉字注解.精读内核源码

四大码仓中文注解 . 定期同步官方代码

鸿蒙研究站( weharmonyos ) | 每天死磕一点点,原创不易,欢迎转载,请注明出处。若能支持点赞则更佳,感谢每一份支持。

展开阅读全文
加载中

作者的其它热门文章

打赏
1
3 收藏
分享
打赏
3 评论
3 收藏
1
分享
返回顶部
顶部