登录 注册
当前位置:主页 > 资源下载 > 50 > 存储设备维护手册中关于程序消息队列的状态部分,适用于emc datadomain 2500型号

存储设备维护手册中关于程序消息队列的状态部分,适用于emc datadomain 2500型号

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

资源介绍

OSQQuery()函数使用户可以查询一个消息队列的当前状态。程序清单 L6.27是该函数的源 代码。OSQQuery()需要两个参数:一个是指向消息队列的指针 pevent。它是在建立一个消息队 列时,由 OSQCreate()函数返回的;另一个是指向 OS_Q_DATA(见 uCOS_II.H)数据结构的指针 pdata。该结构包含了有关消息队列的信息。在调用 OSQQuery()函数之前,必须先定义该数据结 构变量。OS_Q_DATA结构包含下面的几个域: .OSMsg 如果消息队列中有消息,它包含指针.OSQOut所指向的队列单元中的内容。如果队 列是空的,.OSMsg包含一个 NULL指针。 .OSNMsgs是消息队列中的消息数(.OSQEntries的拷贝)。 .OSQSize是消息队列的总的容量 .OSEventTbl[]和.OSEventGrp 是消息队列的等待任务列表。通过它们, OSQQuery()的调 用函数可以得到等待该消息队列中的消息的任务总数。 OSQQuery()函数首先检查 pevent 指针指向的事件控制块是一个消息队列[L6.27(1)],然 后复制等待任务列表[L6.27(2)]。如果消息队列中有消息[L6.27(3)],.OSQOut指向的队列单元 中的内容被复制到 OS_Q_DATA结构中[L6.27(4)],否则的话,就复制一个 NULL指针[L6.27(5)]。 最后,复制消息队列中的消息数和消息队列的容量大小[L6.27(6)]。 程序清单 L6.27 程序消息队列的状态 INT8U OSQQuery (OS_EVENT *pevent, OS_Q_DATA *pdata) { OS_Q *pq; INT8U i; INT8U *psrc; INT8U *pdest; OS_ENTER_CRITICAL(); if (pevent->OSEventType != OS_EVENT_TYPE_Q) { (1) OS_EXIT_CRITICAL(); return (OS_ERR_EVENT_TYPE); } pdata->OSEventGrp = pevent->OSEventGrp; (2) psrc = &pevent->OSEventTbl[0]; pdest = &pdata->OSEventTbl[0]; for (i = 0; i < OS_EVENT_TBL_SIZE; i++) {