This action will force synchronization from WeHarmony/kernel_liteos_a_note, which will overwrite any changes that you have made since you forked the repository, and can not be recovered!!!
Synchronous operation will process in the background and will refresh the page when finishing processing. Please be patient.
百篇博客系列篇.本篇为:
v13.xx 鸿蒙内核源码分析(源码注释篇) | 每天死磕一点点
前因后果相关篇为:
中文注解鸿蒙内核 | kernel_liteos_a_note
是在 OpenHarmony
的 kernel_liteos_a 基础上给内核源码加上中文注解的版本.与官方源码按月保持同步,同步历史如下:
2021/10/09
-- 增加性能优化模块perf
,优化了文件映射模块2021/09/14
-- common,extended等几个目录结构和Makefile调整2021/08/19
-- 各目录增加了BUILD.gn
文件,文件系统部分文件调整2021/07/15
-- 改动不大,新增blackbox
,hidumper
,对一些宏规范化使用2021/06/27
-- 对文件系统/设备驱动改动较大,目录结构进行了重新整理2021/06/08
-- 对编译构建,任务,信号模块有较大的改动2021/05/28
-- 改动不大,主要针对一些错误单词拼写纠正2021/05/13
-- 对系统调用,任务切换,信号处理,异常接管,文件管理,shell做了较大更新,代码结构更清晰2021/04/21
-- 官方优化了很多之前吐槽的地方,点赞2020/09/16
-- 中文注解版起点鸿蒙研究站 | weharmonyos.com
分成三部分内容
100
篇博客输出.注解子系统仓库
在给鸿蒙内核源码加注过程中发现仅仅注解内核仓库还不够,因为它关联了其他子系统,若对这些子系统不了解是很难完整的注解鸿蒙内核,所以也对这些关联仓库进行了部分注解,这些仓库包括:
linux 2.6
内核痛并快乐的经历,一直有个心愿,如何让更多对内核感兴趣的朋友减少阅读时间,加速对计算机系统级的理解,而不至于过早的放弃。但因过程种种,多年一直没有行动,基本要放弃这件事了。恰逢 2020/9/10
鸿蒙正式开源,重新激活了多年的心愿,就有那么点如黄河之水一发不可收拾了。70%
,对内核源码的博客分析已完成了70+篇
, 每天都很充实,很兴奋,连做梦内核代码都在鱼贯而入。如此疯狂地做一件事还是当年谈恋爱的时候, 只因热爱, 热爱是所有的理由和答案。 :P因鸿蒙内核6W+代码量,本身只有较少的注释, 中文注解以不对原有代码侵入为前提,源码中所有英文部分都是原有注释,所有中文部分都是中文版的注释,同时为方便同步官方版本的更新,尽量不去增加代码的行数,不破坏文件的结构,注释多类似以下的方式:
在重要模块的.c/.h文件开始位置先对模块功能做整体的介绍,例如异常接管模块注解如图所示:
注解过程中查阅了很多的资料和书籍,在具体代码处都附上了参考链接。
而函数级注解会详细到重点行,甚至每一行, 例如申请互斥锁的主体函数,不可谓不重要,而官方注释仅有一行,如图所示
另外画了一些字符图方便理解,直接嵌入到头文件中,比如虚拟内存的全景图,因没有这些图是很难理解虚拟内存是如何管理的。
@note_pic
可查看绘制的全部字符图@note_why
是尚未看明白的地方,有看明白的,请Pull Request完善@note_thinking
是一些的思考和建议@note_#if0
是由第三方项目提供不在内核源码中定义的极为重要结构体,为方便理解而添加的。@note_link
是网址链接,方便理解模块信息,来源于官方文档,百篇博客,外部链接@note_good
是给源码点赞的地方/kernel/liteos_a
├── apps # 用户态的init和shell应用程序
├── arch # 体系架构的目录,如arm等
│ └── arm # arm架构代码
├── bsd # freebsd相关的驱动和适配层模块代码引入,例如USB等
├── compat # 内核接口兼容性目录
│ └── posix # posix相关接口
├── drivers # 内核驱动
│ └── char # 字符设备
│ ├── mem # 访问物理IO设备驱动
│ ├── quickstart # 系统快速启动接口目录
│ ├── random # 随机数设备驱动
│ └── video # framebuffer驱动框架
├── fs # 文件系统模块,主要来源于NuttX开源项目
│ ├── fat # fat文件系统
│ ├── jffs2 # jffs2文件系统
│ ├── include # 对外暴露头文件存放目录
│ ├── nfs # nfs文件系统
│ ├── proc # proc文件系统
│ ├── ramfs # ramfs文件系统
│ └── vfs # vfs层
├── kernel # 进程、内存、IPC等模块
│ ├── base # 基础内核,包括调度、内存等模块
│ ├── common # 内核通用组件
│ ├── extended # 扩展内核,包括动态加载、vdso、liteipc等模块
│ ├── include # 对外暴露头文件存放目录
│ └── user # 加载init进程
├── lib # 内核的lib库
├── net # 网络模块,主要来源于lwip开源项目
├── platform # 支持不同的芯片平台代码,如Hi3516DV300等
│ ├── hw # 时钟与中断相关逻辑代码
│ ├── include # 对外暴露头文件存放目录
│ └── uart # 串口相关逻辑代码
├── platform # 支持不同的芯片平台代码,如Hi3516DV300等
├── security # 安全特性相关的代码,包括进程权限管理和虚拟id映射管理
├── syscall # 系统调用
├── tools # 构建工具及相关配置和代码
└── zzz # 中文加注版比官方版无新增文件,只多了一个zzz的目录,里面放了一些图片/文件/工具,
# 它与内核代码无关,大家可以忽略它,取名zzz是为了排在最后,减少对原有代码目录级的侵入,
# zzz 的想法源于微信中名称为AAA的那帮朋友,你的微信里应该也有他们熟悉的身影吧 :|P
按时间顺序:
按功能模块:
前因后果 | 基础工具 | 加载运行 | 进程管理 |
---|---|---|---|
总目录 调度故事 内存主奴 源码注释 源码结构 静态站点 | 双向链表 位图管理 用栈方式 定时器 原子操作 时间管理 | ELF格式 ELF解析 静态链接 重定位 进程映像 | 进程管理 进程概念 Fork 特殊进程 进程回收 信号生产 信号消费 Shell编辑 Shell解析 |
编译构建 | 进程通讯 | 内存管理 | 任务管理 |
编译环境 编译过程 环境脚本 构建工具 gn应用 忍者ninja | 自旋锁 互斥锁 进程通讯 信号量 事件控制 消息队列 | 内存分配 内存管理 内存汇编 内存映射 内存规则 物理内存 | 时钟任务 任务调度 任务管理 调度队列 调度机制 线程概念 并发并行 CPU 系统调用 任务切换 |
文件系统 | 硬件架构 | ||
文件概念 文件系统 索引节点 挂载目录 根文件系统 字符设备 VFS 文件句柄 管道文件 | 汇编基础 汇编传参 工作模式 寄存器 异常接管 汇编汇总 中断切换 中断概念 中断管理 |
四大码仓中文注解 . 定期同步官方代码
QQ群 790015635 | 入群密码 666
鸿蒙研究站( weharmonyos ) | 每天死磕一点点,原创不易,欢迎转载,请注明出处。若能支持点赞则更佳,感谢每一份支持。
Sign in to post a comment
Repository Comments ( 0 )