首先是一个疑惑,
main()开头:
OsSetMainTask();
OsCurrTaskSet(OsGetMainTask());
secondary_cpu_start()开头:
OsCurrTaskSet(OsGetMainTask());
MainTask:
LosTaskCB g_mainTask[LOSCFG_KERNEL_CORE_NUM];
VOID* OsGetMainTask()
{
return (g_mainTask + ArchCurrCpuid());
}
VOID OsSetMainTask()
{
UINT32 i;
CHAR *name = "osMain";
errno_t ret;
for (i = 0; i < LOSCFG_KERNEL_CORE_NUM; i++) {
g_mainTask[i].taskStatus = OS_TASK_STATUS_UNUSED;
g_mainTask[i].taskID = LOSCFG_BASE_CORE_TSK_LIMIT;
g_mainTask[i].priority = OS_TASK_PRIORITY_LOWEST;
#if (LOSCFG_KERNEL_SMP_LOCKDEP == YES)
g_mainTask[i].lockDep.lockDepth = 0;
g_mainTask[i].lockDep.waitLock = NULL;
#endif
ret = memcpy_s(g_mainTask[i].taskName, OS_TCB_NAME_LEN, name, strlen(name));
if (ret != EOK) {
g_mainTask[i].taskName[0] = '\0';
}
LOS_ListInit(&g_mainTask[i].lockList);
}
}
这个不知道干什么用,注释只写着/* temp task blocks for booting procedure */
=============================&#