文件名称:在等待任务列表中查找最高优先级的任务-emc datadomain 2500 存储设 备维护手册
文件大小:4.33MB
文件格式:PDF
更新时间:2024-06-29 01:39:11
uCOS-II
程序清单 L6.4 在等待任务列表中查找最高优先级的任务 y = OSUnMapTbl[pevent->OSEventGrp]; x = OSUnMapTbl[pevent->OSEventTbl[y]]; prio = (y << 3) + x; 举例来说,如果.OSEventGrp的值是 01101000(二进制),而对应的 OSUnMapTbl[.OSEventGrp] 值为 3,说明最高优先级任务所在的组是 3。类似地,如果.OSEventTbl[3]的值是 11100100(二 进制),OSUnMapTbl[.OSEventTbl[3]]的值为 2,则处于等待状态的任务的最高优先级是 3×8+2 =26。 在µC/OS-II中,事件控制块的总数由用户所需要的信号量、邮箱和消息队列的总数决定。 该值由 OS_CFG.H 中的#define OS_MAX_EVENTS定义。在调用 OSInit()时(见 3.11节,µC/OS-II 的初始化),所有事件控制块被链接成一个单向链表——空闲事件控制块链表(图 F6.3)。每 当建立一个信号量、邮箱或者消息队列时,就从该链表中取出一个空闲事件控制块,并对它进 行初始化。因为信号量、邮箱和消息队列一旦建立就不能删除,所以事件控制块也不能放回到 空闲事件控制块链表中。