#鸿蒙通关秘籍#如何在任务排序链表中插入一个任务?

HarmonyOS
5天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
星辰梦LAN

插入任务排序链表的关键函数是OsTaskAdd2TimerList。任务在等待资源时调用此函数,该函数计算等待时间的低5位作为索引,高27位作为滚动数,并将任务插入链表的合适位置。

c VOID OsTaskAdd2TimerList(LosTaskCB *taskCB, UINT32 timeout) { UINT32 sortIndex = timeout & OS_TSK_SORTLINK_MASK; UINT32 rollNum = (timeout >> OS_TSK_SORTLINK_LOGLEN); (sortIndex > 0) ? 0 : (rollNum--); EVALUATE_L(taskCB->idxRollNum, rollNum); sortIndex = (sortIndex + g_taskSortLink.cursor) & OS_TSK_SORTLINK_MASK; EVALUATE_H(taskCB->idxRollNum, sortIndex); LOS_DL_LIST *listObject = g_taskSortLink.sortLink + sortIndex; // 插入任务的具体代码逻辑 }

分享
微博
QQ
微信
回复
5天前
相关问题
Web组件如何发起一个下载任务
441浏览 • 1回复 待解决