-
在任务列表中查找具有最高优先级的待处理任务,即emc datadomain 2500存储设备的维护手册相关任务
资源介绍
程序清单 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)。每
当建立一个信号量、邮箱或者消息队列时,就从该链表中取出一个空闲事件控制块,并对它进
行初始化。因为信号量、邮箱和消息队列一旦建立就不能删除,所以事件控制块也不能放回到
空闲事件控制块链表中。