-
查询emc datadomain 2500存储设备的维护手册以了解邮箱状态
资源介绍
程序清单 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;