【文件属性】:
文件名称:查询邮箱的状态-emc datadomain 2500 存储设 备维护手册
文件大小:4.33MB
文件格式:PDF
更新时间:2021-06-09 07:52:34
uCOS-II
程序清单 L6.17 无等待地从邮箱中得到消息
void *OSMboxAccept (OS_EVENT *pevent)
{
void *msg;
OS_ENTER_CRITICAL();
if (pevent->OSEventType != OS_EVENT_TYPE_MBOX) { (1)
OS_EXIT_CRITICAL();
return ((void *)0);
}
msg = pevent->OSEventPtr; (2)
if (msg != (void *)0) { (3)
pevent->OSEventPtr = (void *)0; (4)
}
OS_EXIT_CRITICAL();
return (msg); (5)
}
6.6.5 查询一个邮箱的状态, OSMboxQuery()
OSMboxQuery()函数使应用程序可以随时查询一个邮箱的当前状态。程序清单 L6.18 是该
函数的源代码。它需要两个参数:一个是指向邮箱的指针 pevent。该指针是在建立该邮箱时,
由 OSMboxCreate()函数返回的;另一个是指向用来保存有关邮箱的信息的 OS_MBOX_DATA(见
uCOS_II.H)数据结构的指针 pdata。在调用 OSMboxCreate()函数之前,必须先定义该结构变量,
用来保存有关邮箱的信息。之所以定义一个新的数据结构,是因为这里关心的只是和特定邮箱
有关的内容,而非整个 OS_EVENT 数据结构的内容。后者还包含了另外两个域(.OSEventCnt
和.OSEventType),而 OS_MBOX_DATA只包含邮箱中的消息指针(.OSMsg)和该邮箱现有的等待
任务列表(.OSEventTbl[]和.OSEventGrp)。
和前面的所以函数一样,该函数也是先检查事件控制是否是邮箱[L6.18(1)]。然后,将邮
箱中的等待任务列表[L6.18(2)]和邮箱中的消息[L6.18(3)]从 OS_EVENT 数据结构复制到
OS_MBOX_DATA数据结构。
程序清单 L6.18 查询邮箱的状态
INT8U OSMboxQuery (OS_EVENT *pevent, OS_MBOX_DATA *pdata)
{
INT8U i;