From 983dcba1f0448f49d3a5282f9a00ab7fa2afab54 Mon Sep 17 00:00:00 2001 From: kuangyufei Date: Thu, 28 Oct 2021 17:21:01 +0800 Subject: [PATCH] =?UTF-8?q?=20=E6=B3=A8=E8=A7=A3=E6=94=AF=E6=8C=81doxygen,?= =?UTF-8?q?=E8=BE=93=E5=87=BA=20http://weharmonyos.com/doxygen=20=20=20=20?= =?UTF-8?q?=20=E7=99=BE=E4=B8=87=E6=B1=89=E5=AD=97=E6=B3=A8=E8=A7=A3=20+?= =?UTF-8?q?=20=E7=99=BE=E7=AF=87=E5=8D=9A=E5=AE=A2=E5=88=86=E6=9E=90=20=3D?= =?UTF-8?q?>=20=E6=8C=96=E9=80=8F=E9=B8=BF=E8=92=99=E5=86=85=E6=A0=B8?= =?UTF-8?q?=E6=BA=90=E7=A0=81=20=20=20=20=20=E5=8D=9A=E5=AE=A2=E8=BE=93?= =?UTF-8?q?=E5=87=BA=E7=AB=99=E7=82=B9(=E5=9B=BD=E5=86=85):http://weharmon?= =?UTF-8?q?yos.com=20=20=20=20=20=E5=8D=9A=E5=AE=A2=E8=BE=93=E5=87=BA?= =?UTF-8?q?=E7=AB=99=E7=82=B9(=E5=9B=BD=E5=A4=96):https://weharmony.github?= =?UTF-8?q?.io=20=20=20=20=20=E6=B3=A8=E8=A7=A3=E6=96=87=E4=BB=B6=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F:https://gitee.com/weharmony/third=5Fparty=5FNuttX=20?= =?UTF-8?q?=20=20=20=20=E6=B3=A8=E8=A7=A3=E5=8D=8F=E8=AE=AE=E6=A0=88:https?= =?UTF-8?q?://gitee.com/weharmony/third=5Fparty=5Flwip=20=20=20=20=20?= =?UTF-8?q?=E6=B3=A8=E8=A7=A3=E7=BC=96=E8=AF=91=E5=AD=90=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?:https://gitee.com/weharmony/build=5Flite?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + README.md | 68 +++++++------------ arch/arm/arm/include/los_arch_mmu.h | 3 +- arch/arm/include/los_hw.h | 24 +++---- kernel/base/include/los_percpu_pri.h | 37 +++++----- kernel/base/include/los_signal.h | 6 +- kernel/common/main.c | 10 +-- .../extended/dynload/include/los_load_elf.h | 58 +++++++++------- zzz/git/push.sh | 2 +- 9 files changed, 103 insertions(+), 106 deletions(-) diff --git a/.gitignore b/.gitignore index 1f386aec..3214b97a 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,4 @@ tags # Build temp files /out +zzz/doxygen diff --git a/README.md b/README.md index 46f83c3b..88a6f44d 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,11 @@ 子曰:“里仁为美。择不处仁,焉得知?”《论语》:里仁篇 -[![在这里插入图片描述](https://gitee.com/weharmony/docs/raw/master/pic/other/io1.png)](http://weharmonyos.com/) - -百篇博客系列篇.本篇为: - -v13.xx 鸿蒙内核源码分析(源码注释篇) | 每天死磕一点点 - - -前因后果相关篇为: - -* [v08.03 鸿蒙内核源码分析(总目录) | 百万汉字注解 百篇博客分析](https://my.oschina.net/weharmony/blog/4626852) -* [v09.04 鸿蒙内核源码分析(调度故事) | 用故事说内核调度](https://my.oschina.net/weharmony/blog/4634668) -* [v10.03 鸿蒙内核源码分析(内存主奴) | 皇上和奴才如何相处](https://my.oschina.net/weharmony/blog/4646802) -* [v13.05 鸿蒙内核源码分析(源码注释) | 每天死磕一点点](https://my.oschina.net/weharmony/blog/4686747) -* [v18.02 鸿蒙内核源码分析(源码结构) | 内核文件各自含义](https://my.oschina.net/weharmony/blog/4869137) -* [v52.05 鸿蒙内核源码分析(静态站点) | 码农都不爱写注释和文档](https://my.oschina.net/weharmony/blog/5042657) +[![](https://gitee.com/weharmonyos/resources/raw/master/common/io.png)](http://weharmonyos.com/) +百篇博客分析.本篇为: (源码注释篇) | 每天死磕一点点 ### 几点说明 -**中文注解鸿蒙内核 | [kernel_liteos_a_note](https://gitee.com/weharmony/kernel_liteos_a_note)** +**中文注解鸿蒙内核 | [kernel_liteos_a_note](https://gitee.com/weharmony/kernel_liteos_a_note)** 是在 `OpenHarmony` 的 [kernel_liteos_a](https://gitee.com/openharmony/kernel_liteos_a) 基础上给内核源码加上中文注解的版本.与官方源码按月保持同步,同步历史如下: @@ -35,12 +22,14 @@ v13.xx 鸿蒙内核源码分析(源码注释篇) | 每天死磕一点点 **鸿蒙研究站 | [weharmonyos.com](http://weharmonyos.com)** -分成三部分内容 +分成四部分内容 * [OpenHarmony开发者文档](http://weharmonyos.com/openharmony) 是对官方文档 [docs](https://gitee.com/openharmony/docs) 做的非常炫酷的静态站点,支持侧边栏/面包屑/搜索/中英文,非常方便的查看官方文档,大大提高学习和开发效率 - * [鸿蒙内核源码分析](http://weharmonyos.com/weharmony) 是对内核源码注解过程中整理出来的`100`篇博客输出. - * 分析内核的工具和书籍 如: [鸿蒙源码分析.离线文档](http://weharmonyos.com/history.html) , [GNU汇编](http://weharmonyos.com/book/assembly.html), [gn参考手册](http://weharmonyos.com/gn/docs/) - + * [鸿蒙内核源码分析](http://weharmonyos.com/weharmony) 是对内核源码注解过程中整理出来的`100`篇博客输出. + * [源码文档输出](http://weharmonyos.com/doxygen/index.html) 是通过`doxygen`对内核源码注解的直接输出,有了详细的函数调用关系和行级代码注解,更快的熟悉内核运行机制. 快去体验下吧 + * 分析内核的工具和书籍 如: [鸿蒙源码分析.离线文档](http://weharmonyos.com/history.html) , [GNU汇编](http://weharmonyos.com/book/assembly.html), [gn参考手册](http://weharmonyos.com/gn/docs/) + + **注解子系统仓库** 在给鸿蒙内核源码加注过程中发现仅仅注解内核仓库还不够,因为它关联了其他子系统,若对这些子系统不了解是很难完整的注解鸿蒙内核,所以也对这些关联仓库进行了部分注解,这些仓库包括: @@ -49,7 +38,7 @@ v13.xx 鸿蒙内核源码分析(源码注释篇) | 每天死磕一点点 * [协议栈 | lwip](https://gitee.com/weharmony/third_party_lwip) * [文件系统 | NuttX](https://gitee.com/weharmony/third_party_NuttX) * [标准库 | musl](https://gitee.com/weharmony/third_party_musl) - + ### 为何要精读内核源码? * 码农的学职生涯,都应精读一遍内核源码。以浇筑好计算机知识大厦的地基,地基纵深的坚固程度,很大程度能决定未来大厦能盖多高。那为何一定要精读细品呢? * 因为内核代码本身并不太多,都是浓缩的精华,精读是让各个知识点高频出现,不孤立成点状记忆,没有足够连接点的知识点是很容易忘的,点点成线,线面成体,连接越多,记得越牢,如此短时间内容易结成一张高浓度,高密度的系统化知识网,训练大脑肌肉记忆,驻入大脑直觉区,想抹都抹不掉,终生携带,随时调取。跟骑单车一样,一旦学会,即便多年不骑,照样跨上就走,游刃有余。 @@ -69,17 +58,24 @@ v13.xx 鸿蒙内核源码分析(源码注释篇) | 每天死磕一点点 在重要模块的.c/.h文件开始位置先对模块功能做整体的介绍,例如异常接管模块注解如图所示: - ![在这里插入图片描述](https://gitee.com/weharmony/docs/raw/master/pic/other/ycjg.png) + ![](https://gitee.com/weharmonyos/resources/raw/master/13/ycjg.png) 注解过程中查阅了很多的资料和书籍,在具体代码处都附上了参考链接。 * 而函数级注解会详细到重点行,甚至每一行, 例如申请互斥锁的主体函数,不可谓不重要,而官方注释仅有一行,如图所示 - ![在这里插入图片描述](https://gitee.com/weharmony/docs/raw/master/pic/other/sop.png) + ![](https://gitee.com/weharmonyos/resources/raw/master/13/sop.png) * 另外画了一些字符图方便理解,直接嵌入到头文件中,比如虚拟内存的全景图,因没有这些图是很难理解虚拟内存是如何管理的。 - ![在这里插入图片描述](https://gitee.com/weharmony/docs/raw/master/pic/other/vm.png) + ![](https://gitee.com/weharmonyos/resources/raw/master/13/vm.png) + +### 输出注解文档 | 注释结合图形 +为了很好的输出注解内容,注解支持 `doxygen` 格式 + +[![](https://gitee.com/weharmonyos/resources/raw/master/73/4.png)](http://weharmonyos.com/doxygen/index.html) +[![](https://gitee.com/weharmonyos/resources/raw/master/73/3.png)](http://weharmonyos.com/doxygen/index.html) +可前往 >> [鸿蒙研究站 | 源码文档版块 ](http://weharmonyos.com/doxygen/index.html) 搜索 **OsSchedStart** 体验 ### 有哪些特殊的记号 - [x] 搜索 `@note_pic` 可查看绘制的全部字符图 - [x] 搜索 `@note_why` 是尚未看明白的地方,有看明白的,请Pull Request完善 @@ -131,17 +127,18 @@ v13.xx 鸿蒙内核源码分析(源码注释篇) | 每天死磕一点点 # 它与内核代码无关,大家可以忽略它,取名zzz是为了排在最后,减少对原有代码目录级的侵入, # zzz 的想法源于微信中名称为AAA的那帮朋友,你的微信里应该也有他们熟悉的身影吧 :|P ``` -### **参与贡献** +### 参与贡献 * [新建 Pull Request](https://gitee.com/weharmony/kernel_liteos_a_note/pull/new/weharmony:master...weharmony:master) * [新建 Issue](https://gitee.com/weharmony/kernel_liteos_a_note/issues) ### 微信 | QQ 群 前往 >> [http://weharmonyos.com/qun.html](http://weharmonyos.com/qun.html) + ### 捐赠记录,再次感谢!!! 前往 >> [http://weharmonyos.com/donate.html](http://weharmonyos.com/donate.html) -### **百篇博客分析.深挖内核地基** +### 百篇博客分析.深挖内核地基 * 给鸿蒙内核源码加注释过程中,整理出以下文章。内容立足源码,常以生活场景打比方尽可能多的将内核知识点置入某种场景,具有画面感,容易理解记忆。说别人能听得懂的话很重要! 百篇博客绝不是百度教条式的在说一堆诘屈聱牙的概念,那没什么意思。更希望让内核变得栩栩如生,倍感亲切.确实有难度,自不量力,但已经出发,回头已是不可能的了。 😛 * 与代码有bug需不断debug一样,文章和注解内容会存在不少错漏之处,请多包涵,但会反复修正,持续更新,v**.xx 代表文章序号和修改的次数,精雕细琢,言简意赅,力求打造精品内容。 @@ -219,24 +216,11 @@ v13.xx 鸿蒙内核源码分析(源码注释篇) | 每天死磕一点点 * [v70.05 鸿蒙内核源码分析(管道文件) | 如何降低数据流动成本](https://my.oschina.net/weharmony/blog/5258434) * [v71.03 鸿蒙内核源码分析(Shell编辑) | 两个任务 三个阶段](https://my.oschina.net/weharmony/blog/5269307) * [v72.01 鸿蒙内核源码分析(Shell解析) | 应用窥伺内核的窗口](https://my.oschina.net/weharmony/blog/5282207) +* [v73.01 鸿蒙内核源码分析(注释文档) | 鸿蒙所有函数调用关系图](https://my.oschina.net/weharmony/blog/5042657) +### 关注不迷路.代码即人生 -按功能模块: - -|前因后果|基础工具|加载运行|进程管理 -|:-:|:-:|:-:|:-:| -[总目录](https://my.oschina.net/weharmony/blog/4626852) [调度故事](https://my.oschina.net/weharmony/blog/4634668) [内存主奴](https://my.oschina.net/weharmony/blog/4646802) [源码注释](https://my.oschina.net/weharmony/blog/4686747) [源码结构](https://my.oschina.net/weharmony/blog/4869137) [静态站点](https://my.oschina.net/weharmony/blog/5042657) |[双向链表](https://my.oschina.net/weharmony/blog/4572304) [位图管理](https://my.oschina.net/weharmony/blog/4888467) [用栈方式](https://my.oschina.net/weharmony/blog/4893388) [定时器](https://my.oschina.net/weharmony/blog/4951625) [原子操作](https://my.oschina.net/weharmony/blog/4955290) [时间管理](https://my.oschina.net/weharmony/blog/4956163) |[ELF格式](https://my.oschina.net/weharmony/blog/5030288) [ELF解析](https://my.oschina.net/weharmony/blog/5048746) [静态链接](https://my.oschina.net/weharmony/blog/5049918) [重定位](https://my.oschina.net/weharmony/blog/5055124) [进程映像](https://my.oschina.net/weharmony/blog/5060359) |[进程管理](https://my.oschina.net/weharmony/blog/4574429) [进程概念](https://my.oschina.net/weharmony/blog/4937521) [Fork](https://my.oschina.net/weharmony/blog/5010301) [特殊进程](https://my.oschina.net/weharmony/blog/5014444) [进程回收](https://my.oschina.net/weharmony/blog/5017716) [信号生产](https://my.oschina.net/weharmony/blog/5022149) [信号消费](https://my.oschina.net/weharmony/blog/5027224) [Shell编辑](https://my.oschina.net/weharmony/blog/5269307) [Shell解析](https://my.oschina.net/weharmony/blog/5282207) | -|编译构建|进程通讯|内存管理|任务管理 -[编译环境](https://my.oschina.net/weharmony/blog/5028613) [编译过程](https://my.oschina.net/weharmony/blog/5064209) [环境脚本](https://my.oschina.net/weharmony/blog/5132725) [构建工具](https://my.oschina.net/weharmony/blog/5135157) [gn应用](https://my.oschina.net/weharmony/blog/5137565) [忍者ninja](https://my.oschina.net/weharmony/blog/5139034) |[自旋锁](https://my.oschina.net/weharmony/blog/4944129) [互斥锁](https://my.oschina.net/weharmony/blog/4945465) [进程通讯](https://my.oschina.net/weharmony/blog/4947398) [信号量](https://my.oschina.net/weharmony/blog/4949720) [事件控制](https://my.oschina.net/weharmony/blog/4950956) [消息队列](https://my.oschina.net/weharmony/blog/4952961) |[内存分配](https://my.oschina.net/weharmony/blog/4646802) [内存管理](https://my.oschina.net/weharmony/blog/4652284) [内存汇编](https://my.oschina.net/weharmony/blog/4692156) [内存映射](https://my.oschina.net/weharmony/blog/4694841) [内存规则](https://my.oschina.net/weharmony/blog/4698384) [物理内存](https://my.oschina.net/weharmony/blog/4842408) |[时钟任务](https://my.oschina.net/weharmony/blog/4574493) [任务调度](https://my.oschina.net/weharmony/blog/4595539) [任务管理](https://my.oschina.net/weharmony/blog/4603919) [调度队列](https://my.oschina.net/weharmony/blog/4606916) [调度机制](https://my.oschina.net/weharmony/blog/4623040) [线程概念](https://my.oschina.net/weharmony/blog/4915543) [并发并行](https://my.oschina.net/weharmony/blog/4940329) [CPU](https://my.oschina.net/weharmony/blog/4952034) [系统调用](https://my.oschina.net/weharmony/blog/4967613) [任务切换](https://my.oschina.net/weharmony/blog/4988628) | -|文件系统|硬件架构 -[文件概念](https://my.oschina.net/weharmony/blog/5152858) [文件系统](https://my.oschina.net/weharmony/blog/5165752) [索引节点](https://my.oschina.net/weharmony/blog/5168716) [挂载目录](https://my.oschina.net/weharmony/blog/5172566) [根文件系统](https://my.oschina.net/weharmony/blog/5177087) [字符设备](https://my.oschina.net/weharmony/blog/5200946) [VFS](https://my.oschina.net/weharmony/blog/5211662) [文件句柄](https://my.oschina.net/weharmony/blog/5253251) [管道文件](https://my.oschina.net/weharmony/blog/5258434) |[汇编基础](https://my.oschina.net/weharmony/blog/4920361) [汇编传参](https://my.oschina.net/weharmony/blog/4927892) [工作模式](https://my.oschina.net/weharmony/blog/4965052) [寄存器](https://my.oschina.net/weharmony/blog/4969487) [异常接管](https://my.oschina.net/weharmony/blog/4973016) [汇编汇总](https://my.oschina.net/weharmony/blog/4977924) [中断切换](https://my.oschina.net/weharmony/blog/4990948) [中断概念](https://my.oschina.net/weharmony/blog/4992750) [中断管理](https://my.oschina.net/weharmony/blog/4995800) | -### **百万汉字注解.精读内核源码** -四大码仓中文注解 . 定期同步官方代码 - -[![WeHarmony/kernel_liteos_a_note](https://gitee.com/weharmony/kernel_liteos_a_note/widgets/widget_card.svg?colors=4183c4,ffffff,ffffff,e3e9ed,666666,9b9b9b)](https://gitee.com/weharmony/kernel_liteos_a_note) +![](https://gitee.com/weharmonyos/resources/raw/master/common/so1so.png) -鸿蒙研究站( weharmonyos ) | 每天死磕一点点,原创不易,欢迎转载,请注明出处。若能支持点赞则更佳,感谢每一份支持。 -### **关注不迷路.代码即人生** -![鸿蒙内核源码分析](https://gitee.com/weharmony/docs/raw/master/pic/other/so1so.png) **QQ群 790015635 | 入群密码 666** diff --git a/arch/arm/arm/include/los_arch_mmu.h b/arch/arm/arm/include/los_arch_mmu.h index 755e968f..cf92fbef 100644 --- a/arch/arm/arm/include/los_arch_mmu.h +++ b/arch/arm/arm/include/los_arch_mmu.h @@ -50,7 +50,8 @@ extern "C" { * @file los_arch_mmu.h * @brief 简介 * @details 细节 - * @mainpage https://blog.csdn.net/kuangyufei/article/details/109032636 + * @attention + https://blog.csdn.net/kuangyufei/article/details/109032636 https://blog.csdn.net/qq_38410730/article/details/81036768 虚拟内存空间中的地址叫做“虚拟地址”;而实际物理内存空间中的地址叫做“实际物理地址”或“物理地址”。处理器 运算器和应用程序设计人员看到的只是虚拟内存空间和虚拟地址,而处理器片外的地址总线看到的只是物理地址空间和物理地址。 diff --git a/arch/arm/include/los_hw.h b/arch/arm/include/los_hw.h index f9f6cb17..68add924 100644 --- a/arch/arm/include/los_hw.h +++ b/arch/arm/include/los_hw.h @@ -44,16 +44,16 @@ extern "C" { #endif /* __cplusplus */ #endif /* __cplusplus */ -#define OS_SCHEDULE_IN_IRQ 0x0 //因中断产生调度 -#define OS_SCHEDULE_IN_TASK 0x1 //因任务产生调度 +#define OS_SCHEDULE_IN_IRQ 0x0 ///< 因中断产生调度 +#define OS_SCHEDULE_IN_TASK 0x1 ///< 因任务产生调度 -#define PSR_T_ARM 0x00000000u //工作状态:arm -#define PSR_T_THUMB 0x00000020u //工作状态:thumb -#define PSR_MODE_SVC 0x00000013u //管理模式 -#define PSR_MODE_SYS 0x0000001Fu //系统模式 -#define PSR_FIQ_DIS 0x00000040u //禁止快中断 -#define PSR_IRQ_DIS 0x00000080u //禁止普通中断 -#define PSR_MODE_USR 0x00000010u //用户模式 +#define PSR_T_ARM 0x00000000u ///< 工作状态:arm +#define PSR_T_THUMB 0x00000020u ///< 工作状态:thumb +#define PSR_MODE_SVC 0x00000013u ///< 管理模式 +#define PSR_MODE_SYS 0x0000001Fu ///< 系统模式 +#define PSR_FIQ_DIS 0x00000040u ///< 禁止快中断 +#define PSR_IRQ_DIS 0x00000080u ///< 禁止普通中断 +#define PSR_MODE_USR 0x00000010u ///< 用户模式 #define PSR_MODE_SVC_THUMB (PSR_MODE_SVC | PSR_T_THUMB | PSR_FIQ_DIS | PSR_IRQ_DIS) #define PSR_MODE_SVC_ARM (PSR_MODE_SVC | PSR_T_ARM | PSR_FIQ_DIS | PSR_IRQ_DIS) @@ -64,11 +64,11 @@ extern "C" { #define PSR_MODE_USR_THUMB (PSR_MODE_USR | PSR_T_THUMB) #define PSR_MODE_USR_ARM (PSR_MODE_USR | PSR_T_ARM) -#define LOS_CHECK_SCHEDULE ((!OS_INT_ACTIVE) && OsPreemptable()) //检查是否可以调度 +#define LOS_CHECK_SCHEDULE ((!OS_INT_ACTIVE) && OsPreemptable()) ///< 检查是否可以调度 typedef struct {//CPU供货商描述符 - const UINT32 partNo; //编号 - const CHAR *cpuName; //CPU名称 + const UINT32 partNo; ///< 编号 + const CHAR *cpuName; ///< CPU名称 } CpuVendor; extern CpuVendor g_cpuTable[]; diff --git a/kernel/base/include/los_percpu_pri.h b/kernel/base/include/los_percpu_pri.h index 18ee7277..dba36d29 100644 --- a/kernel/base/include/los_percpu_pri.h +++ b/kernel/base/include/los_percpu_pri.h @@ -50,27 +50,28 @@ typedef enum { CPU_EXC /* cpu in the exc */ //CPU处于异常状态 } ExcFlag; #endif -/* -* per-CPU变量是linux系统一个非常有趣的特性,它为系统中的每个处理器都分配了该变量的副本。 -* 这样做的好处是,在多处理器系统中,当处理器操作属于它的变量副本时,不需要考虑与其他处理器的竞争的问题, -*/ + +/** + * @brief per-CPU变量是linux系统一个非常有趣的特性,它为系统中的每个处理器都分配了该变量的副本。 + * 这样做的好处是,在多处理器系统中,当处理器操作属于它的变量副本时,不需要考虑与其他处理器的竞争的问题, + */ typedef struct {//内核对cpu的描述 - SortLinkAttribute taskSortLink; /* task sort link */ //挂等待和延时的任务 - SPIN_LOCK_S taskSortLinkSpin; /* task sort link spin lock *///操作taskSortLink链表的自旋锁 - SortLinkAttribute swtmrSortLink; /* swtmr sort link */ //挂还没到时间的定时器 - SPIN_LOCK_S swtmrSortLinkSpin; /* swtmr sort link spin lock *///操作swtmrSortLink链表的自旋锁 - UINT64 responseTime; /* Response time for current nuclear Tick interrupts *///当前CPU核 Tick 中断的响应时间 - UINT64 tickStartTime; /* The time when the tick interrupt starts processing */ - UINT32 responseID; /* The response ID of the current nuclear TICK interrupt *///当前CPU核TICK中断的响应ID + SortLinkAttribute taskSortLink; /* task sort link \n 挂等待和延时的任务 */ + SPIN_LOCK_S taskSortLinkSpin; /* task sort link spin lock \n 操作taskSortLink链表的自旋锁 */ + SortLinkAttribute swtmrSortLink; /* swtmr sort link \n 挂还没到时间的定时器 */ + SPIN_LOCK_S swtmrSortLinkSpin; /* swtmr sort link spin lock \n* 操作swtmrSortLink链表的自旋锁 */ + UINT64 responseTime; /* Response time for current nuclear Tick interrupts \n 当前CPU核 Tick 中断的响应时间 */ + UINT64 tickStartTime; /* The time when the tick interrupt starts processing \n */ + UINT32 responseID; /* The response ID of the current nuclear TICK interrupt \n 当前CPU核TICK中断的响应ID */ UINTPTR runProcess; /* The address of the process control block pointer to which - the current kernel is running *///当前进程控制块地址 - UINT32 idleTaskID; /* idle task id */ //每个CPU都有一个空闲任务 见于 OsIdleTaskCreate - UINT32 taskLockCnt; /* task lock flag */ //任务锁的数量,当 > 0 的时候,需要重新调度了 - UINT32 swtmrHandlerQueue; /* software timer timeout queue id */ //软时钟超时队列句柄 - UINT32 swtmrTaskID; /* software timer task id */ //软时钟任务ID - UINT32 schedFlag; /* pending scheduler flag */ //调度标识 INT_NO_RESCH INT_PEND_RESCH + the current kernel is running \n 当前进程控制块地址 */ + UINT32 idleTaskID; /* idle task id \n 每个CPU都有一个空闲任务 见于 OsIdleTaskCreate */ + UINT32 taskLockCnt; /* task lock flag \n 任务锁的数量,当 > 0 的时候,需要重新调度了 */ + UINT32 swtmrHandlerQueue; /* software timer timeout queue id \n 软时钟超时队列句柄 */ + UINT32 swtmrTaskID; /* software timer task id \n 软时钟任务ID */ + UINT32 schedFlag; /* pending scheduler flag \n 调度标识 INT_NO_RESCH INT_PEND_RESCH */ #ifdef LOSCFG_KERNEL_SMP - UINT32 excFlag; /* cpu halt or exc flag *///cpu 停止或 异常 标志 + UINT32 excFlag; /* cpu halt or exc flag \n cpu 停止或 异常 标志 */ #ifdef LOSCFG_KERNEL_SMP_CALL LOS_DL_LIST funcLink; /* mp function call link */ #endif diff --git a/kernel/base/include/los_signal.h b/kernel/base/include/los_signal.h index 3c326a46..4995e94b 100644 --- a/kernel/base/include/los_signal.h +++ b/kernel/base/include/los_signal.h @@ -209,8 +209,10 @@ typedef struct SigInfoListNode { struct SigInfoListNode *next; siginfo_t info; } SigInfoListNode; - -typedef struct {//信号控制块(描述符) +/** + * @brief 信号控制块(描述符) + */ +typedef struct { sigset_t sigFlag; //不屏蔽的信号集 sigset_t sigPendFlag; //信号阻塞标签集,记录那些信号来过,任务依然阻塞的集合.即:这些信号不能唤醒任务 sigset_t sigprocmask; /* Signals that are blocked */ //任务屏蔽了哪些信号 diff --git a/kernel/common/main.c b/kernel/common/main.c index c47a2696..a9b1987a 100644 --- a/kernel/common/main.c +++ b/kernel/common/main.c @@ -32,10 +32,12 @@ #include "los_config.h" #include "los_sched_pri.h" -/****************************************************************************** -内核入口函数,由汇编调用,见于reset_vector_up.S 和 reset_vector_mp.S -up指单核CPU, mp指多核CPU bl main -******************************************************************************/ +/** + * @brief + * 内核入口函数,由汇编调用,见于reset_vector_up.S 和 reset_vector_mp.S \n + * 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; diff --git a/kernel/extended/dynload/include/los_load_elf.h b/kernel/extended/dynload/include/los_load_elf.h index 70a9b4fd..46e1cf23 100644 --- a/kernel/extended/dynload/include/los_load_elf.h +++ b/kernel/extended/dynload/include/los_load_elf.h @@ -85,36 +85,42 @@ extern "C" { #define PF_R 0x4 //只读 #define PF_W 0x2 //只写 #define PF_X 0x1 //可执行 -//ELF信息结构体, + +/**@struct + * @brief ELF信息结构体 + */ typedef struct { - LD_ELF_EHDR elfEhdr; //ELF头信息 - LD_ELF_PHDR *elfPhdr; //ELF程序头信息,也称段头信息 - UINT32 fileLen; //文件长度 - INT32 procfd; //文件描述符 + LD_ELF_EHDR elfEhdr; ///< ELF头信息 + LD_ELF_PHDR *elfPhdr; ///< ELF程序头信息,也称段头信息 + UINT32 fileLen; ///< 文件长度 + INT32 procfd; ///< 文件描述符 } ELFInfo; -//ELF加载信息 + +/**@struct + * @brief ELF加载信息 + */ typedef struct { - ELFInfo execInfo; //可执行文件信息 - ELFInfo interpInfo;//解析器文件信息 lib/libc.so - const CHAR *fileName;//文件名称 - CHAR *execName;//程序名称 - INT32 argc; //参数个数 - INT32 envc; //环境变量个数 - CHAR *const *argv; //参数数组 - CHAR *const *envp; //环境变量数组 - UINTPTR stackTop;//栈底位置,递减满栈下,stackTop是高地址位 - UINTPTR stackTopMax;//栈最大上限 - UINTPTR stackBase;//栈顶位置 - UINTPTR stackParamBase;//栈参数空间,放置启动ELF时的外部参数,大小为 USER_PARAM_BYTE_MAX 4K - UINT32 stackSize;//栈大小 - INT32 stackProt;//LD_PT_GNU_STACK栈的权限 ,例如(RW) + ELFInfo execInfo; ///< 可执行文件信息 + ELFInfo interpInfo;///< 解析器文件信息 lib/libc.so + const CHAR *fileName;///< 文件名称 + CHAR *execName;///< 程序名称 + INT32 argc; ///< 参数个数 + INT32 envc; ///< 环境变量个数 + CHAR *const *argv; ///< 参数数组 + CHAR *const *envp; ///< 环境变量数组 + UINTPTR stackTop;///< 栈底位置,递减满栈下,stackTop是高地址位 + UINTPTR stackTopMax;///< 栈最大上限 + UINTPTR stackBase;///< 栈顶位置 + UINTPTR stackParamBase;///< 栈参数空间,放置启动ELF时的外部参数,大小为 USER_PARAM_BYTE_MAX 4K + UINT32 stackSize;///< 栈大小 + INT32 stackProt;///< LD_PT_GNU_STACK栈的权限 ,例如(RW) UINTPTR argStart; - UINTPTR loadAddr; //加载地址 - UINTPTR elfEntry; //装载点地址 即: _start 函数地址 - UINTPTR topOfMem; //虚拟空间顶部位置,loadInfo->topOfMem = loadInfo->stackTopMax - sizeof(UINTPTR); - UINTPTR oldFiles; //旧空间的文件映像 - LosVmSpace *newSpace;//新虚拟空间 - LosVmSpace *oldSpace;//旧虚拟空间 + UINTPTR loadAddr; ///< 加载地址 + UINTPTR elfEntry; ///< 装载点地址 即: _start 函数地址 + UINTPTR topOfMem; ///< 虚拟空间顶部位置,loadInfo->topOfMem = loadInfo->stackTopMax - sizeof(UINTPTR); + UINTPTR oldFiles; ///< 旧空间的文件映像 + LosVmSpace *newSpace;///< 新虚拟空间 + LosVmSpace *oldSpace;///< 旧虚拟空间 INT32 randomDevFD; } ELFLoadInfo; //不超过用户空间顶部位置 diff --git a/zzz/git/push.sh b/zzz/git/push.sh index 3c4ca819..c85537b7 100644 --- a/zzz/git/push.sh +++ b/zzz/git/push.sh @@ -1,5 +1,5 @@ git add -A -git commit -m ' 开始对注解调整/规范,以便支持docxgen +git commit -m ' 注解支持doxygen,输出 http://weharmonyos.com/doxygen 百万汉字注解 + 百篇博客分析 => 挖透鸿蒙内核源码 博客输出站点(国内):http://weharmonyos.com 博客输出站点(国外):https://weharmony.github.io -- GitLab