登录 注册
当前位置:主页 > 资源下载 > 50 > 向邮箱发送有关emc datadomain 2500存储设备维护手册的消息

向邮箱发送有关emc datadomain 2500存储设备维护手册的消息

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

资源介绍

程序清单 L6.16 向邮箱中发送一条消息 INT8U OSMboxPost (OS_EVENT *pevent, void *msg) { OS_ENTER_CRITICAL(); if (pevent->OSEventType != OS_EVENT_TYPE_MBOX) { (1) OS_EXIT_CRITICAL(); return (OS_ERR_EVENT_TYPE); } if (pevent->OSEventGrp) { (2) OSEventTaskRdy(pevent, msg, OS_STAT_MBOX); (3) OS_EXIT_CRITICAL(); OSSched(); (4) return (OS_NO_ERR); } else { if (pevent->OSEventPtr != (void *)0) { (5) OS_EXIT_CRITICAL(); return (OS_MBOX_FULL); } else { pevent->OSEventPtr = msg; (6) OS_EXIT_CRITICAL(); return (OS_NO_ERR); } } } 6.6.4 无等待地从邮箱中得到一个消息, OSMboxAccept() 应用程序也可以以无等待的方式从邮箱中得到消息。这可以通过程序清单 L6.17 中的 OSMboxAccept()函数来实现。 OSMboxAccept()函数开始也是检查事件控制块是否是由 OSMboxCreate()函数建立的 [L6.17(1)]。接着,它得到邮箱中的当前内容[L6.17(2)],并判断 是否有消息是可用的[L6.17(3)]。如果邮箱中有消息,就把邮箱清空[L6.17(4)],而邮箱中原 来指向消息的指针被返回给 OSMboxAccept()的调用函数[L6.17(5)]。OSMboxAccept()函数的调 用函数必须检查该返回值是否为 NULL。如果该值是 NULL,说明邮箱是空的,没有可用的消息。 如果该值是非 NULL值,说明邮箱中有消息可用,而且该调用函数已经得到了该消息。中断服务 子程序在试图得到一个消息时,应该使用 OSMboxAccept()函数,而不能使用 OSMboxPend()函数。 OSMboxAccept()函数的另一个用途是,用户可以用它来清空一个邮箱中现有的内容。