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

对任务模块更详细的注解

    百万汉字注解 + 百篇博客分析 => 挖透鸿蒙内核源码
    博客输出站点(国内):http://weharmonyos.com
    博客输出站点(国外):https://weharmony.github.io
    注解文件系统:https://gitee.com/weharmony/third_party_NuttX
    注解协议栈:https://gitee.com/weharmony/third_party_lwip
    注解编译子系统:https://gitee.com/weharmony/build_lite
上级 587ee0f2
......@@ -112,7 +112,7 @@ VADDR_T *OsGFirstTableGet(VOID)
return (VADDR_T *)g_firstPageTable;
}
//解除L1表的映射关系
/// 解除L1表的映射关系
STATIC INLINE UINT32 OsUnmapL1Invalid(vaddr_t *vaddr, UINT32 *count)
{
UINT32 unmapCount;
......
/*!
* @file los_asid.c
* @brief
*
* \n
* @link http://weharmonyos.com/blog/14.html
* @verbatim
asid(Adress Space ID) 进程标识符,属于CP15协处理器的C13号寄存器,ASID可用来唯一标识进程,并为进程提供地址空间保护。
......@@ -22,8 +20,6 @@
已经被置换到硬盘上了。明白了吗?只关注应用开发的同学当然可以说这关我鸟事,给我的感觉有就行了,但想熟悉内核的同学就必须要明白,
这是每分每秒都在发生的事情。
* @endverbatim
*
* \n
* @version
* @author weharmonyos.com
* @date 2021-11-16
......
......@@ -33,15 +33,15 @@
#include "los_task_pri.h"
/* support cpu vendors */
CpuVendor g_cpuTable[] = { //支持的CPU供应商
/* support cpu vendors | 支持的CPU供应商*/
CpuVendor g_cpuTable[] = {
/* armv7-a */
{ 0xc07, "Cortex-A7" },
{ 0xc09, "Cortex-A9" },
{ 0, NULL }
};
/* logical cpu mapping */ //逻辑层cpu映射
/* logical cpu mapping | cpu 逻辑层映射*/
UINT64 g_cpuMap[LOSCFG_KERNEL_CORE_NUM] = {
[0 ... LOSCFG_KERNEL_CORE_NUM - 1] = (UINT64)(-1) //统一赋值,这个赋值方式还挺别致的.
};
......@@ -69,7 +69,7 @@ VOID OsTaskEntrySetupLoopFrame(UINT32 arg0)
"\tpop {fp, pc}\n");
}
#endif
//内核态任务运行栈初始化
/// 内核态任务运行栈初始化
LITE_OS_SEC_TEXT_INIT VOID *OsTaskStackInit(UINT32 taskID, UINT32 stackSize, VOID *topStack, BOOL initFlag)
{
if (initFlag == TRUE) {
......@@ -112,17 +112,14 @@ LITE_OS_SEC_TEXT VOID OsUserCloneParentStack(VOID *childStack, UINTPTR parentTop
if (sigcb->sigContext != NULL) {
cloneStack = (VOID *)((UINTPTR)sigcb->sigContext - sizeof(TaskContext));
} else {
} else {//cloneStack指向 TaskContext
cloneStack = (VOID *)(((UINTPTR)parentTopOfStack + parentStackSize) - sizeof(TaskContext));
//cloneStack指向 TaskContext
}
(VOID)memcpy_s(childStack, sizeof(TaskContext), cloneStack, sizeof(TaskContext));//直接把任务上下文拷贝了一份
((TaskContext *)childStack)->R0 = 0;//R0寄存器为0,这个很重要, pid = fork() pid == 0 是子进程返回.
((TaskContext *)childStack)->R0 = 0;//R0寄存器为0,这个很重要!!! pid = fork() pid == 0 是子进程返回.
}
/*
用户态运行栈初始化,此时上下文还在内核区
*/
/// 用户态运行栈初始化,此时上下文还在内核区
LITE_OS_SEC_TEXT_INIT VOID OsUserTaskStackInit(TaskContext *context, UINTPTR taskEntry, UINTPTR stack)
{
LOS_ASSERT(context != NULL);
......
......@@ -33,7 +33,7 @@
#include "los_hwi.h"
//节拍初始化
/// 节拍初始化
LITE_OS_SEC_TEXT_INIT UINT32 OsTickInit(UINT32 systemClock, UINT32 tickPerSecond)
{
if ((systemClock == 0) ||
......
......@@ -51,18 +51,18 @@
#endif
///分区信息
struct PartitionInfo {
const CHAR *partName; //分区名称
const CHAR *cmdlineArgName; //命令行参数名称
const CHAR *partName; ///< 分区名称
const CHAR *cmdlineArgName; ///< 命令行参数名称
const CHAR *storageTypeArgName;
CHAR *storageType;
const CHAR *fsTypeArgName;
CHAR *fsType; //文件系统类型
CHAR *fsType; ///< 文件系统类型
const CHAR *addrArgName;
INT32 startAddr;
INT32 startAddr; ///< 开始地址
const CHAR *partSizeArgName;
INT32 partSize;
CHAR *devName;
UINT32 partNum; //分区编号
INT32 partSize; ///< 分区大小
CHAR *devName; ///< 设备名称
UINT32 partNum; ///< 分区编号
};
INT32 GetPartitionInfo(struct PartitionInfo *partInfo);
......
......@@ -47,7 +47,7 @@
STATIC CHAR *g_cmdLine = NULL;
STATIC UINT64 g_alignSize = 0;
STATIC struct BootArgs g_bootArgs[MAX_ARGS_NUM] = {0};
//读取环境变量bootcmd 来启动内核
/// 读取环境变量bootcmd 来启动内核
INT32 LOS_GetCmdLine(VOID)
{
int ret;
......
......@@ -93,7 +93,7 @@ UINT16 LOS_HighBitGet(UINT32 bitmap)
return (OS_BITMAP_MASK - CLZ(bitmap));//CLZ = count leading zeros 用于计算整数的前导零
}
///获取参数位图中最低位为1的索引位, 例如: 00110110 返回 1
/// 获取参数位图中最低位为1的索引位, 例如: 00110110 返回 1
UINT16 LOS_LowBitGet(UINT32 bitmap)
{
if (bitmap == 0) {
......@@ -102,7 +102,7 @@ UINT16 LOS_LowBitGet(UINT32 bitmap)
return CTZ(bitmap);// CTZ = count trailing zeros 用于计算给定整数的尾随零
}
///从start位置开始设置numsSet个bit位 置1
/// 从start位置开始设置numsSet个bit位 置1
VOID LOS_BitmapSetNBits(UINTPTR *bitmap, UINT32 start, UINT32 numsSet)
{
UINTPTR *p = bitmap + BITMAP_WORD(start);
......
......@@ -32,5 +32,5 @@
#include "los_percpu_pri.h"
Percpu g_percpu[LOSCFG_KERNEL_CORE_NUM];
Percpu g_percpu[LOSCFG_KERNEL_CORE_NUM]; ///< CPU池,池大小由CPU核数决定
......@@ -55,7 +55,7 @@
#include "los_test_pri.h"
#endif
STATIC SystemRebootFunc g_rebootHook = NULL;//系统重启钩子函数
STATIC SystemRebootFunc g_rebootHook = NULL;///< 系统重启钩子函数
/// 设置系统重启钩子函数
VOID OsSetRebootHook(SystemRebootFunc func)
{
......
......@@ -43,7 +43,7 @@
#endif
/**
* Register kernel init level labels.
* Register kernel init level labels. | 内核初始化等级
*/
OS_INIT_LEVEL_REG(kernel, 10, g_kernInitLevelList);
......@@ -51,9 +51,10 @@ STATIC volatile UINT32 g_initCurrentLevel = OS_INVALID_VALUE; //当前等级
STATIC volatile struct ModuleInitInfo *g_initCurrentModule = 0; //当前模块
STATIC Atomic g_initCount = 0;
STATIC SPIN_LOCK_INIT(g_initLock);
// 建议每个启动框架都封装一层自己的调用接口
/**
* It is recommended that each startup framework encapsulate a layer of its own calling interface.
* 建议每个启动框架都封装一层自己的调用接口
*/
STATIC VOID InitLevelCall(const CHAR *name, const UINT32 level, struct ModuleInitInfo *initLevelList[])
{
......
......@@ -62,7 +62,7 @@
typedef UINT32 (*OsInitHook)(VOID);//初始化钩子函数
struct ModuleInitInfo {//模块初始化信息
OsInitHook hook; //函数指针,钩子函数
OsInitHook hook; ///< 函数指针,钩子函数
#ifdef LOS_INIT_DEBUG
const CHAR *name;
#endif
......
......@@ -48,13 +48,13 @@
#endif
STATIC BOOL g_srandInit;
/// 打开ELF文件
STATIC INT32 OsELFOpen(const CHAR *fileName, INT32 oflags)
{
INT32 ret = -LOS_NOK;
INT32 procFd;
procFd = AllocProcessFd();
procFd = AllocProcessFd();//分配一个文件描述符
if (procFd < 0) {
return -EMFILE;
}
......@@ -63,13 +63,13 @@ STATIC INT32 OsELFOpen(const CHAR *fileName, INT32 oflags)
SetCloexecFlag(procFd);
}
ret = open(fileName, oflags);
ret = open(fileName, oflags);//打开文件
if (ret < 0) {
FreeProcessFd(procFd);
return -get_errno();
}
AssociateSystemFd(procFd, ret);
AssociateSystemFd(procFd, ret);//分配一个系统描述符
return procFd;
}
......
......@@ -32,7 +32,7 @@
#include "los_cir_buf.h"
//返回循环buf已使用的大小
/// 返回循环buf已使用的大小
UINT32 LOS_CirBufUsedSize(CirBuf *cirbufCB)
{
UINT32 size;
......
#git fetch
git pull origin master
git pull git@gitee.com:weharmony/kernel_liteos_a_note.git master
#git pull --rebase origin master
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册