About 8 min

百篇博客分析.本篇为: (注释文档篇) | 内核所有函数调用关系图

下载 >> 离线文档.鸿蒙内核源码分析(百篇博客分析.挖透鸿蒙内核).pdf

前因后果相关篇为:

为了很好的输出注解文档, 中文注解鸿蒙内核仓 | kernel_liteos_a_note 开始支持 doxygen 格式, 不废话,直接上图.

鸿蒙 main 函数长啥样

前往 >> 鸿蒙研究站 | 源码文档版块 搜索 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;

    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住不干活
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

点击查看函数 | 注释结合图形

前往 >> 鸿蒙研究站 | 源码文档版块 搜索 OsSchedStart

模块之间调用关系

搜索/索引功能 | 无比强悍

前往 >> 鸿蒙研究站 | 源码文档版块 搜索 anything

结构体/宏/枚举类型

前往 >> 鸿蒙研究站 | 源码文档版块 搜索 ProcessCB

头文件的引用关系

注释模板

doxygen 源码 Doxygen 是一个程序的文件产生工具,可将程序中的特定注释转换成为说明文件。Doxygen采用\@作为特殊标记符,当在特殊注释里面检测到了特殊标记符,则接下来检测紧跟单词是不是Doxygen 事先规定好的,如果是,则将按照特定的规则来解释紧跟着的注释;如果不是呢,则将\@解释为普通文本

文件注释模板

/** @brief  	摘要
 *  @file   	文件名
 *  @author 	作者
 *  @version	版本
 *  @date  	日期
 *  @note    注解(写一些功能及注意事项等...)
 */
1
2
3
4
5
6
7

函数注释模板

/**  
 * @brief         函数摘要
 * @param1        参数1
 * @param2        参数2
 * @param3   	  参数3
 * @retval        返回值类型
 * @return		  返回值
 * @warning       警告: 例如: 参数不能为空
 * @note          注解
 */
1
2
3
4
5
6
7
8
9
10

行注释模板

/**< 在这里写你要加的东西 */
///< 在这里写你要加的东西
1
2

常用注释关键字

@author     作者
@brief      摘要
@bug        被标记的代码会在Bug列表中出现
@class      类名,格式:@class <name> [<header-file>] [<header-name>] eg:@class Test"test/test.h"
@date       日期
@file       文件名,可以默认为空,DoxyGen会自己加
@param      函数参数名及其说明
@return     描述该函数的返回值情况eg: @return 本函数返回执行结果,若成功则返回TRUE,否则返回FLASE
@retval     描述返回值类型 eg: @retval NULL 空字符串。
@retval !NULL 非空字符串。
@note       注解
@attention  注意
@name       分组名
@warning    警告信息
@enum       引用了某个枚举,Doxygen会在该枚举处产生一个链接 eg:@enum CTest::MyEnum
@var        引用了某个变量,Doxygen会在该枚举处产生一个链接 eg:@var CTest::m_FileKey
@exception  可能产生的异常描述 eg: @exception 本函数执行可能会产生超出范围的异常
@todo       对将要做的事情进行注释
@see        see also字段
@relates <name> 通常用做把非成员函数的注释文档包含在类的说明文档中。
@since      从哪个版本后开始有这个函数的
@code       在注释中开始说明一段代码,直到@endcode命令。
@endcode    在注释中代码段的结束。
@remarks    备注
@pre        用来说明代码项的前提条件。
@post       用来说明代码项之后的使用条件。
@deprecated 这个函数可能会在将来的版本中取消。
@defgroup   模块名
@{          模块开始
@}          模块结束
@class      声明一个类 
@version    版本号
@fn         声明一个函数
@par        开始一个段落,段落名称描述由你自己指定,比如可以写一段示例代码
-           一级项目符号
-#          二级项目符号
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

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

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

按功能模块:

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

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

关注不迷路.代码即人生

QQ群 790015635 | 入群密码 666 | 存放重要文档资料

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