登录 注册
当前位置:主页 > 资源下载 > 50 > 在任务列表中查找具有最高优先级的待处理任务,即emc datadomain 2500存储设备的维护手册相关任务

在任务列表中查找具有最高优先级的待处理任务,即emc datadomain 2500存储设备的维护手册相关任务

  • 更新:2024-11-04 13:56:44
  • 大小:4.33MB
  • 推荐:★★★★★
  • 来源:网友上传分享
  • 类别:OS - 操作系统
  • 格式:PDF

资源介绍

程序清单 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)。每 当建立一个信号量、邮箱或者消息队列时,就从该链表中取出一个空闲事件控制块,并对它进 行初始化。因为信号量、邮箱和消息队列一旦建立就不能删除,所以事件控制块也不能放回到 空闲事件控制块链表中。