Nucleus源码分析Queue.docVIP

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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被添加到优先级或高优先级

文档评论(0)

xingkongwd + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档