#鸿蒙通关秘籍#如何初始化鸿蒙轻内核的任务就绪队列?

HarmonyOS
5天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Y影刃SQL

任务就绪队列的初始化通过 OsPriqueueInit() 函数实现,系统初始化阶段调用。其调用路径为:main.c:main() -> kernel\src\los_init.c:LOS_KernelInit() -> kernel\src\los_task.c:OsTaskInit() -> OsPriqueueInit()。内存大小为 OS_PRIORITY_QUEUE_PRIORITYNUM 个双向链表所需的大小。以下是初始化的核心代码:

STATIC UINT32 OsPriqueueInit(VOID) { UINT32 priority; UINT32 size = OS_PRIORITY_QUEUE_PRIORITYNUM * sizeof(LOS_DL_LIST);

g_losPriorityQueueList = (LOS_DL_LIST *)LOS_MemAlloc(m_aucSysMem0, size);
if (g_losPriorityQueueList == NULL) {
    return LOS_NOK;
}

for (priority = 0; priority < OS_PRIORITY_QUEUE_PRIORITYNUM; ++priority) {
    LOS_ListInit(&g_losPriorityQueueList[priority]);
}
return LOS_OK;

}

此代码申请必要的内存,将每个数组元素初始化为双向循环链表。

分享
微博
QQ
微信
回复
5天前
相关问题