登录 注册
当前位置:主页 > 资源下载 > 50 > 查询一个关于-emc datadomain 2500 存储设备的维护手册

查询一个关于-emc datadomain 2500 存储设备的维护手册

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

资源介绍

程序清单 L6.12 无等待地请求一个信号量 INT16U OSSemAccept (OS_EVENT *pevent) { INT16U cnt; OS_ENTER_CRITICAL(); if (pevent->OSEventType != OS_EVENT_TYPE_SEM) { (1) OS_EXIT_CRITICAL(); return (0); } cnt = pevent->OSEventCnt; (2) if (cnt > 0) { (3) pevent->OSEventCnt--; (4) } OS_EXIT_CRITICAL(); return (cnt); (5) } 6.5.5 查询一个信号量的当前状态, OSSemQuery() 在应用程序中,用户随时可以调用函数 OSSemQuery()[程序清单 L6.13]来查询一个信号量 的当前状态。该函数有两个参数:一个是指向信号量对应事件控制块的指针 pevent。该指针是 在生产信号量时,由 OSSemCreate()函数返回的;另一个是指向用于记录信号量信息的数据结构 OS_SEM_DATA(见 uCOS_II.H)的指针 pdata。因此,调用该函数前,用户必须先定义该结构变 量,用于存储信号量的有关信息。在这里,之所以使用一个新的数据结构的原因在于,调用函 数应该只关心那些和特定信号量有关的信息,而不是象OS_EVENT数据结构包含的很全面的信息。 该数据结构只包含信号量计数值.OSCnt 和等待任务列表.OSEventTbl[]、.OSEventGrp,而 OS_EVENT中还包含了另外的两个域.OSEventType和.OSEventPtr。 和其它与信号量有关的函数一样,OSSemQuery()也是先检查 pevent 指向的事件控制块是 否是 OSSemCreate()产生的[L6.13(1)],然后将等待任务列表[L6.13(2)]和计数值[L6.13(3)] 从 OS_EVENT结构拷贝到 OS_SEM_DATA 结构变量中去。