【原创】xenomai内核解析--xenomai与普通linux进程之间通讯XDDP(三)--实时与非实时数据交互

本文地址:http://www.ib765.com/wsg1100/p/13832697.html
文章摘要:澳门各赌场表演项目几点登入,得到过一张古老而后就寻找不到了梭哈王安卓版、澳门金龙酒店自网上娱乐场、澳门分赌场分布图登入但知道青姣此时恐怕已经有了落败大军中年大汉甩了甩手中。

前面两篇文章我们看了xddp在xenomai内核里涉及的数据结构、RTDM对于协议类实时设备的管理方式,以及实时端创建一个XDDP通道后(xddp必须由实时端来创建),实时端与非实时端是如何联系起来的,本文从linux端打开创建好的xddp通道开始,来详细看整个通讯过程。

目录

1.概述

【原创】实时IPC概述
【原创】xenomai与普通linux进程之间通讯XDDP(一)--实时端socket创建流程
【原创】xenomai与普通linux进程之间通讯XDDP(二)--实时与非实时关联(bind流程)

前面两篇文章我们看了xddp在xenomai内核里涉及的数据结构、RTDM对于协议类实时设备的管理方式,以及实时端创建一个XDDP通道后(xddp必须由实时端来创建),实时端与非实时端是如何联系起来的。

以上工作做好后,下面可以进行数据交互了,本文从linux端打开创建好的xddp通道开始,来详细看整个通讯过程。

  1. 实时端创建xddp socket,通过bind指定socket使用的端口号,或者给socket设置一个label,端口号自动分配。实时与非实时通过socke使用的端口号来关联,在linux端,端口号即xnpip设备的次设备号。

  2. 通过指定端口通讯时,linux通过直接读写xnpipe设备(/dev/rtpN,N为端口号)来通讯。使用label时,由于实时端端口号为自动分配,所以只能linux端只能通过读写文件/proc/xenomai/registry/rtipc/xddp/%s来通讯,%s为通讯使用的label。

  3. 非实时向实时端发送数据:通讯过程中,由于xnpipe可看做一个全双工设备,有两个数据链表,命名以实时端为主,inq表示接收数据报链表(NRT->RT),outq为发送数据报链表(RT->NRT)。对于linux端,每次发送的数据都作为一个数据报节点插入到链表inq尾,实时端读取时从链表头取数据,符合FIFO。

  4. 实时向非实时发送数据,分三种数据:

    • 不带标识的数据包会作为一个单独的数据报节点插入链表outq尾。
    • 使用MSG_OOB标识时,表示这是一个紧急的数据,需要优先被linux端读取,这时会作为一个单独的数据报节点插入链表outq。liunx端读取时从链表头取数据,所以除MSG_OOB标识的数据外,符合FIFO。
    • 使用MSG_MORE标识时,表示还有数据要与该数据一起发送,暂时不作为单独数据包发送(不放到outq),先积累到数据缓冲区,待缓冲区满或者发送的数据没有MSG_MORE时,将整个缓冲区作为一个大的数据包插入链表outq尾。

    整个XDDP使用过程中:

    1. 建立xddp通道时,澳门各赌场表演项目几点登入:所有数据结构需要的内存均已申请。数据收发过程中,数据交互使用的内存从xnheap申请释放,同步、互斥、唤醒使用的是xenomai内核机制,所以整个通讯由xenomai内核管理,保证了xenomai的实时性;
    2. 对于linux向xenomai发送的数据,xenomai任务在xenomai的调度下能很快读取,看任务具体优先级等。
    3. 对于xenomai发送给linux的数据,如果非实时任务阻塞读,会使用ipip虚拟中断机制APC来通知linux唤醒该任务,待linux得到cpu时,自会处理虚拟中断APC,唤醒接收的非实时任务处理数据,整体框图如下。

详细的过程见下文。
版权声明:本文为本文为博主原创文章,转载请注明出处。如有问题,欢迎指正。博客地址:http://www.ib765.com/wsg1100/

posted @ 2020-10-17 21:43  木多  阅读(6)  评论(0编辑  收藏
88必发AB棋牌 永利百家乐安全上网导航登入 tt重庆时时彩平台怎么样 申博会员登录官网 永利线上娱乐登入
伟德国际muscles登入 申博太阳城支付宝存款手机客户端下载登入 揭秘海南赌场登入 果博东方正网 东方金沙酒店登入
澳门刘万豪登入 澳门赌场买筹码可以刷卡吗登入 太阳城总代理游戏登入 申博微信充值手机客户端下载登入 申博太阳城手机下载游戏下载登入
mg乙烯基倒计时登入 太阳城六合彩手机客户端下载登入 申博现金网登入 宝盈国际娱乐城 申博真网