无等待取消息队列技术在EMC Datadomain 2500存储设备维护中的应用
需积分: 41 143 浏览量
更新于2024-08-09
收藏 4.33MB PDF 举报
"该资源是一份关于EMC DataDomain 2500 存储设备维护的手册,其中包含了一个程序清单L6.25,该清单展示了如何无等待地从消息队列中取出一条消息。这个示例适用于uCOS-II操作系统。手册还介绍了如何在Intel/AMD80186处理器上编译和测试代码,并提供了安装µC/OS-II的步骤。"
在无等待地从消息队列中取一条消息的过程中,程序清单L6.25展示了关键的代码实现。这个函数`OSQAccept`用于在没有阻塞的情况下从消息队列中获取一个消息。以下是其主要步骤:
1. 使用`OS_ENTER_CRITICAL()`进入临界区,确保在此期间不会有其他任务干扰对消息队列的操作,保证了操作的原子性。
2. 首先检查传入的事件句柄`pevent`是否指向一个消息队列,如果不是,通过`(pevent->OSEventType != OS_EVENT_TYPE_Q)`判断,然后立即退出临界区并返回NULL,表示无法从非消息队列对象中取消息。
3. 获取队列指针`pq`,该指针指向了消息队列的数据结构。
4. 检查消息队列是否为空,即`pq->OSQEntries != 0`,如果队列为空,说明没有可取的消息,函数不做任何处理,保持队列状态不变。
5. 如果队列不为空,从队列头部取出消息,`msg = *pq->OSQOut++`,这里通过解引用队列的输出指针获取消息,并将其向前移动。
6. 更新消息队列的条目数,`pq->OSQEntries--`,表示队列中的消息减少1。
7. 最后,处理队列索引越界的情况,如果输出指针到达队列末尾,`pq->OSQOut == pq->OSQEnd`,则将其重置到队列起始位置,`pq->OSQOut = pq->OSQStart`,确保队列索引始终有效。
这份手册的背景是基于嵌入式系统开发,特别是使用了µC/OS-II实时操作系统。µC/OS-II是一个可移植、可固化、占先式多任务实时操作系统,广泛应用于嵌入式系统中。手册中提到的范例部分,讲述了如何在Borland C/C++环境下为80x86系列处理器编译和测试代码,以及如何在DOS或Windows 95环境下安装并使用µC/OS-II。
通过安装步骤,用户可以在指定的驱动器上创建一个名为\SOFTWARE的目录,并将所有µC/OS-II的文件和子目录放置于此,包括示例代码所在的\SOFTWARE\uCOS-II\EX1_x86L目录。在安装前,用户应阅读READ.ME文件以了解更多信息。这样,用户就能在个人计算机上进行代码编译、链接和执行,而无需在目标硬件上反复烧录和下载程序,极大地提高了开发效率。
2021-07-20 上传
2011-02-20 上传
2015-08-17 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
臧竹振
- 粉丝: 47
- 资源: 4073
最新资源
- 掌握压缩文件管理:2工作.zip文件使用指南
- 易语言动态版置入代码技术解析
- C语言编程实现电脑系统测试工具开发
- Wireshark 64位:全面网络协议分析器,支持Unix和Windows
- QtSingleApplication: 确保单一实例运行的高效库
- 深入了解Go语言的解析器组合器PARC
- Apycula包安装与使用指南
- AkerAutoSetup安装包使用指南
- Arduino Due实现VR耳机的设计与编程
- DependencySwizzler: Xamarin iOS 库实现故事板 UIViewControllers 依赖注入
- Apycula包发布说明与下载指南
- 创建可拖动交互式图表界面的ampersand-touch-charts
- CMake项目入门:创建简单的C++项目
- AksharaJaana-*.*.*.*安装包说明与下载
- Arduino天气时钟项目:源代码及DHT22库文件解析
- MediaPlayer_server:控制媒体播放器的高级服务器