- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Nucleus源码分析Queue,nucleusplus源码,nucleus源码,linux下queue源代码,nucleus,nucleusaccumbens,nucleus系统,datanucleus,nucleusos,nucleus操作系统
Nucleus源码分析—QUEUE模块
大唐微电子技术有限公司
荣芳
页数 修改后版本 修改者 修改日期 修改说明 备注
Document information File Location D:\××××\×××××××.doc(请说明在文档服务器上的位置) Last saved 2004-12-14 9:28
目 录
1. 概述 3
1.1 功能描述 3
1.2 文件信息 3
2. 实现原理 4
2.1 QUEUE链表 4
2.2 挂起任务链表 4
2.3 消息结构 4
2.4 模块化概述 5
2.4.1 QUEUE模块的基本操作 5
2.4.2 基本操作流程图 5
3. 数据结构 6
3.1 QU控制块 6
3.2 QU挂起结构 6
3.3 保护结构 7
3.4 模块变量 7
4. 程序分析 7
4.1 接口函数映射表 7
4.2 QUC.C程序 7
4.2.1 QUC_Create_Queue 7
4.2.2 QUC_Delete_Queue 9
4.2.3 QUC_Send_To_Queue 11
4.2.4 QUC_Receive_From_Queue 13
4.2.5 QUC_Cleanup 17
4.3 QUS.C程序 17
4.3.1 QUS_Reset_Queue 17
4.3.2 QUS_Send_To_Front_Of_Queue 18
4.3.3 QUS_Broadcast_To_Queue 22
4.4 其它 24
4.4.1 QUD.C 24
4.4.2 QUI.C 24
4.4.3 QUF.C 25
4.4.4 QUCE.C 25
4.4.5 QUSE.C 26
4.4.6 程序中的保护 26
概述
功能描述
队列提供了一种传输多种消息的机制。发送消息请求将消息拷贝到队列中,接收消息请求就从队列中将消息取出来。消息即既可以放在队列的开头也可以放在队尾。
队列消息可以由一个或多个32位的字符组成。既可以是固定长度的也可以是变长度的。消息格式的类型在队列建立的时候设置。变长消息队列需要在每条消息的开头添加额外32位字符。此外接收变长消息队列的消息请求要声明最大消息尺寸,对定长消息请求声明实际消息尺寸。
队列消息收发服务提供三种挂起方式:无条件被挂起、超时挂起和不被挂起。 一个任务被队列挂起有几种原因。如果一个任务向一个空的队列请求消息,它就会被挂起。此外,一个任务试图向一个满队列发送消息,它也会被挂起。一旦队列可以满足挂起任务的要求,任务就将恢复运行。例如,假设一个任务由于等待队列里的一个消息而被挂起,一旦消息发到队列以后,挂起的任务将会恢复。 多个任务可能被一个队列挂起。任务按FIFO或Priority顺序被挂起,在队列建立的时候就设置好。如果队列支持FIFO挂起,任务恢复的顺序与他们挂起的顺序一致。如果队列支持优先级挂起,任务的恢复按照告优先级到低优先级的顺序。
队列可以动态建立和删除。系统对应用程序建立的队列数量没有明确限制。每个队列都需要一个控制块和一个队列数据区。空间都是由应用程序提供。
文件信息
队列组件(QU)包括9个文件,列表如下:
文件名称 内容描述 QU_DEFS.H 该文件定义QU组件特定的数据结构和常量 QU_EXTR.H 该文件定义QU组件的外部接口 QUD.C 该文件定义QU组件的全局数据结构 QUI.C 该文件包括QU组件的初始化代码 QUF.C 该文件包括提供QU组件信息的相关函数 QUC.C 该文件包括QU组件的核心函数 QUS.C 该文件包括QU组件的附加函数 QUCE.C 该文件包括有错误检查的定义在QUC.C中的函数 QUSE.C 该文件包括有错误检查的定义在QUS.C中的函数
实现原理
QUEUE链表
QUEUE可以动态的创建和删除。 生成QUEUE的控制块放在链表中。新建立的QUEUE被放在链表尾,被删除的QUEUE被从链表去除。链表的头指针是QUD_Created_Queues_List.
NUCLEUS提供结构QUD_List_Protect来保护生成队列链表的完整性。在QUD_List_Protect保护下完成queue的建立和删除。
挂起任务链表
在任务因queue挂起的处理过程中会建立一个QU_SUSPEND结构。结构中包含任务信息和挂起时的请求。这个链表包含在queue的控制块结构中。每个挂起任务有一个block.。在挂起列表中block的次序是queue建立是决定的。如果选择FIFO挂起类型,block被添加到链表尾。如果选择优先级挂起类型,block被添加到优先级或高优先级
您可能关注的文档
最近下载
- 成都市金牛区2020-2021学年下学期一年级期末考试语文试卷(部编版).pdf VIP
- 儿科“一科一品”之做有温度的护理人.pptx VIP
- 2025年广州数学中考试题及答案.doc VIP
- 中文释义 PASS图解速记高中词汇正序版.xlsx VIP
- 辅警招聘考试公安基础知识(情景分析题)模拟试卷3(题后含答案及解析).pdf VIP
- 工程质量风险分级管控清单 .pdf VIP
- 生物医学工程先进制造:第一章 绪论-2015.ppt VIP
- 培养员工归属感培养员工归属感.ppt VIP
- 古方上篇后八方.张志峰老师讲解和答疑2016.3.5.doc VIP
- JingChaDaXue《灭火救援指挥》期末试卷(A)参考答案.docx VIP
文档评论(0)