提交 9c73f63c 编写于 作者: 鸿蒙内核源码分析's avatar 鸿蒙内核源码分析

内核模块初始化等级说明

    百万汉字注解 + 百篇博客分析 => 挖透鸿蒙内核源码
    鸿蒙研究站 | http://weharmonyos.com (国内)
              | https://weharmony.github.io (国外)
    oschina | https://my.oschina.net/weharmony
    博客园 | https://www.cnblogs.com/weharmony/
    知乎 | https://www.zhihu.com/people/weharmonyos
    csdn | https://blog.csdn.net/kuangyufei
    51cto | https://harmonyos.51cto.com/column/34
    掘金 | https://juejin.cn/user/756888642000808
    公众号 | 鸿蒙研究站 (weharmonyos)
上级 dfcae7f0
......@@ -151,7 +151,7 @@ LITE_OS_SEC_TEXT_INIT VOID HalClockStart(VOID)
TimerTvalWrite(OS_CYCLE_PER_TICK);//递减计时器,使能tick中断,产生周期性tick
TimerCtlWrite(1);
}
/// 延迟微妙数
VOID HalDelayUs(UINT32 usecs)
{
UINT64 cycles = (UINT64)usecs * g_sysClock / OS_SYS_US_PER_SECOND;
......
......@@ -119,7 +119,7 @@ STATIC VOID OsLockDepPrint(const CHAR *fmt, va_list ap)
UartPuts(buf, len, 0);
}
/// 打印死锁检测信息
STATIC VOID OsPrintLockDepInfo(const CHAR *fmt, ...)
{
va_list ap;
......
......@@ -1065,7 +1065,7 @@ STATIC VOID OsSchedTaskSwitch(LosTaskCB *runTask, LosTaskCB *newTask)
runTask->schedStat.switchCount++;
#endif
/* do the task context switch */
OsTaskSchedule(newTask, runTask); //执行汇编代码
OsTaskSchedule(newTask, runTask); //执行汇编代码,,注意OsTaskSchedule是一个汇编函数 见于 los_dispatch.s
}
VOID OsSchedIrqEndCheckNeedSched(VOID)
......
......@@ -33,25 +33,29 @@
#define _LOS_INIT_H
#include "los_init_info.h"
//内核模块初始化级别
/**
* Kernel Module Init Level
* Kernel Module Init Level | 内核模块初始化等级
*/
#define LOS_INIT_LEVEL_EARLIEST 0 //最早级
#define LOS_INIT_LEVEL_ARCH_EARLY 1 //架构早期
#define LOS_INIT_LEVEL_PLATFORM_EARLY 2 //平台早期
#define LOS_INIT_LEVEL_KMOD_PREVM 3 //内存模块即将开始
#define LOS_INIT_LEVEL_VM_COMPLETE 4 //内存模块完成
#define LOS_INIT_LEVEL_ARCH 5 //架构级
#define LOS_INIT_LEVEL_PLATFORM 6 //平台级
#define LOS_INIT_LEVEL_KMOD_BASIC 7 //基础级
#define LOS_INIT_LEVEL_KMOD_EXTENDED 8 //扩展级 ,ipc,perf,procfs,vdso
#define LOS_INIT_LEVEL_KMOD_TASK 9 //任务级
#define LOS_INIT_LEVEL_EARLIEST 0 ///< 最早期初始化, 说明:不依赖架构,单板以及后续模块会对其有依赖的纯软件模块初始化 例如:Trace模块
#define LOS_INIT_LEVEL_ARCH_EARLY 1 ///< 架构早期,说明:架构相关,后续模块会对其有依赖的模块初始化,如启动过程中非必需的功能,建议放到LOS_INIT_LEVEL_ARCH层
#define LOS_INIT_LEVEL_PLATFORM_EARLY 2 ///< 平台早期,说明:单板平台、驱动相关,后续模块会对其有依赖的模块初始化,如启动过程中必需的功能,
///< 建议放到LOS_INIT_LEVEL_PLATFORM层 例如:uart模块
#define LOS_INIT_LEVEL_KMOD_PREVM 3 ///< 内存初始化前的内核模块初始化 说明:在内存初始化之前需要使能的模块初始化
#define LOS_INIT_LEVEL_VM_COMPLETE 4 ///< 基础内存就绪后的初始化 说明:此时内存初始化完毕,需要进行使能且不依赖进程间通讯机制与系统进程的模块初始化
///< 例如:共享内存功能
#define LOS_INIT_LEVEL_ARCH 5 ///< 架构后期初始化 说明:架构拓展功能相关,后续模块会对其有依赖的模块初始化
#define LOS_INIT_LEVEL_PLATFORM 6 ///< 平台后期初始化 说明:单板平台、驱动相关,后续模块会对其有依赖的模块初始化 例如:驱动内核抽象层初始化(mmc、mtd)
#define LOS_INIT_LEVEL_KMOD_BASIC 7 ///< 内核基础模块初始化 说明:内核可拆卸的基础模块初始化 例如:VFS初始化
#define LOS_INIT_LEVEL_KMOD_EXTENDED 8 ///< 内核扩展模块初始化 ,说明:内核可拆卸的扩展模块初始化
///< 例如:系统调用初始化、ProcFS初始化、Futex初始化、HiLog初始化、HiEvent初始化、LiteIPC初始化
#define LOS_INIT_LEVEL_KMOD_TASK 9 ///< 内核任务创建 说明:进行内核任务的创建(内核任务,软件定时器任务)
///< 例如:资源回收系统常驻任务的创建、SystemInit任务创建、CPU占用率统计任务创建
#define LOS_INIT_LEVEL_FINISH 10
/**
* @ingroup los_init
* @brief Register a startup module to the startup process.
* @brief Register a startup module to the startup process. | 将启动模块注册到启动过程,在内核启动过程中注册一个新模块作为内核功能组件的一部分。
*
* @par Description:
* This API is used to register a startup module to the startup process.
......@@ -72,7 +76,7 @@
* @par Dependency:
* <ul><li>los_init.h: the header file that contains the API declaration.</li></ul>
* @see
*/ //将启动模块注册到启动过程,在内核启动过程中注册一个新模块作为内核功能组件的一部分。
*/
#define LOS_MODULE_INIT(_hook, _level) OS_INIT_HOOK_REG(kernel, _hook, _level)
#endif /* _LOS_INIT_H */
git add -A
git commit -m ' 同步官方源码,几处bug的修复
git commit -m ' 内核模块初始化等级说明
百万汉字注解 + 百篇博客分析 => 挖透鸿蒙内核源码
鸿蒙研究站 | http://weharmonyos.com (国内)
| https://weharmony.github.io (国外)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册