CN102546347B - 基于proc技术的虚拟串口热插拔的实现方法及系统 - Google Patents
基于proc技术的虚拟串口热插拔的实现方法及系统 Download PDFInfo
- Publication number
- CN102546347B CN102546347B CN201010593522.9A CN201010593522A CN102546347B CN 102546347 B CN102546347 B CN 102546347B CN 201010593522 A CN201010593522 A CN 201010593522A CN 102546347 B CN102546347 B CN 102546347B
- Authority
- CN
- China
- Prior art keywords
- node
- proc
- tty
- resource
- proc node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种基于proc技术的虚拟串口热插拔的实现方法及系统,其中,上述方法包括:构建tty节点资源和proc节点资源,其中,tty节点资源包括tty节点的信息,proc节点资源包括proc节点的信息;获取与tty节点资源对应的tty驱动资源、proc节点的驱动信息和proc节点;根据tty节点资源、proc节点资源、tty驱动资源和获取的proc节点,建立proc节点与所述tty节点的热插拔功能的关联关系。采用本发明提供的上述技术方案达到了从驱动程序内部设计设备节点,增删设备节点无需知道主设备号,避免了静态分配驱动主设备号潜在的冲突可能,同时也避免了静态分配节点潜在的资源浪费的效果。
Description
技术领域
本发明涉及通信领域,具体而言,涉及一种基于proc技术的虚拟串口热插拔的实现方法及系统。
背景技术
目前,虚拟串口技术已经得到广泛应用,其目的是采用TCP/IP网络替换串口网络,保持第三方串口应用软件正常工作。开发虚拟串口驱动是其中重要环节。根据虚拟串口tty设备创建的时机可以分为静态创建和动态创建两种方式,其中,动态创建即所谓的热插拔技术。热插拔的实现需要预先建立信令通道,以便控制后续虚拟串口tty设备(节点)的创建,也就是媒体通道的建立。整个媒体通道包括tty设备和bridge桥接设备,Bridge桥接设备(节点)本身可以静态或动态创建。Bridge桥接设备的媒体和信令通道可以选择的通信方式很多,如netlink、udev、proc等,相关技术中,bridge设备媒体和信令通道采用不同的通信机制实现,这种混合方式带来的问题是软件架构和实现复杂,不便于管理维护。针对相关技术中上述问题,目前尚未提出有效的解决方案。
发明内容
针对相关技术中,由于桥接设备(节点)的媒体和信令通道采用不同的通信机制实现,导致软件架构和实现较为复杂,不便于管理维护等问题,本发明提供一种基于proc技术的虚拟串口热插拔的实现方法及系统,以解决上述问题至少之一。
根据本发明的一个方面,提供一种基于proc技术的虚拟串口热插拔的实现方法,该方法包括:构建tty节点资源和proc节点资源,其中,tty节点资源包括tty节点的信息,proc节点资源包括proc节点的信息;获取与tty节点资源对应的tty驱动资源、proc节点的驱动信息和proc节点;根据tty节点资源、proc节点资源、tty驱动资源和获取的proc节点,建立proc节点与所述tty节点的热插拔功能的关联关系。
根据本发明的另一个方面,提供一种基于proc技术的虚拟串口热插拔的实现系统,该系统包括:构建模块,用于构建tty节点资源和proc节点资源,其中,tty节点资源包括tty节点的信息,proc节点资源包括proc节点的信息;获取模块,用于获取与tty节点资源对应的tty驱动资源、proc节点的驱动信息和proc节点;关联模块,用于根据tty节点资源、proc节点资源、tty驱动资源和获取的proc节点,建立与proc节点与tty节点的热插拔功能的关联关系。
通过本发明,采用构建proc节点资源和tty节点资源并建立proc节点和tty节点的关联,利用proc节点随路方式实现热插拔,解决了相关技术中由于桥接设备(节点)的媒体和信令通道采用不同的通信机制实现,导致软件架构和实现较为复杂,不便于管理维护等问题,进而达到了从驱动程序内部设计设备节点,增删设备节点也无需知道主设备号,避免了静态分配驱动主设备号潜在的冲突可能,同时也避免了静态分配节点潜在的资源浪费的效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为根据本发明实施例的基于proc技术的虚拟串口热插拔的实现方法流程图;
图2为根据本发明优选实施例的linux多虚拟串口驱动实现原理示意图;
图3为根据本发明优选实施例的proc代理随路方式实现热插拔hotplug原理示意图;
图4为根据本发明优选实施例的proc代理随路方式的方法流程示意图;
图5为基于图4所示实施例的卸载方法流程示意图;
图6为根据本发明实施例的基于proc技术的虚拟串口热插拔的实现系统的结构框图;
图7为根据本发明优选实施例的基于proc技术的虚拟串口热插拔的实现系统的结构示意图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
图1为根据本发明实施例的基于proc技术的虚拟串口热插拔的实现方法流程图。如图1所示,该方法包括:
步骤S102,构建tty节点资源和proc节点资源,其中,tty节点资源包括tty节点的信息,proc节点资源包括proc节点的信息;
步骤S104,获取与tty节点资源对应的tty驱动资源、proc节点的驱动信息和所述proc节点;
步骤S106,根据tty节点资源、proc节点资源、tty驱动资源和上述获取的proc节点来建立proc节点与tty节点的热插拔功能的关联关系。
优选地,上述获取与tty节点资源对应的tty驱动资源可以包括以下处理:获取驱动参数以及注册tty节点的驱动信息;
上述获取与所述proc节点对应的proc节点的驱动信息和所述proc节点,包括:在内核中设置proc节点根目录,并注册proc驱动,向内核注册proc节点。
优选地,上述建立proc节点与tty节点的热插拔功能的关联关系,包括但不限于以下处理:
(1)、通过ioctl接口操纵proc节点,增加与该proc节点一一对应的tty节点;
(2)、建立tty节点和proc节点的耦联。
在优选实施过程中,上述建立proc节点与tty节点的热插拔功能的关联关系,还可以包括以下处理:
(1)、删除与tty节点资源对应的tty节点;
(2)、拆除tty节点和proc节点的耦联。
在上述实施例的优选实施过程中,上述建立与proc节点资源对应的tty节点的热插拔功能的关联之后,还可以包括:删除与proc节点资源对应的proc节点;释放tty节点资源和proc节点资源。
为了更好地理解上述实施例,以下结合图2详细说明linux多虚拟串口驱动的实现原理。如图2所示,用户态tty串口应用以标准串口api接口操作tty串口节点,当write()操作发生时,调用linux操作系统中第一层tty核心层提供的tty_write()函数,然后调用第二层tty线路规程中Idisc.write(),接着调用第三层tty驱动程序文件操作write方法,在第三层该tty驱动层中,需要实现一系列文件访问方法,tty串口模块提供第一、第二标准层,以对用户态提供标准模块api方法。第三层多tty驱动程序由开发者根据需要开发各具特色的芯片驱动程序和其他功能。
上述实施例中,虚拟串口驱动是一个可在linux平台计算机下操作的程序,此驱动程序会创建数个“虚拟”的tty串行端口。在用户态应用程序看来,这些虚拟的tty串行端口与物理tty串行端口相同,操作方式相同。桥接设备采用Proc技术,信令没有引入第3类通信机制,实现媒体和信令合一,对proc设备节点也以文件访问,这样就实现了TCP/IP网络替代了串口网络。
上述实施例中,tty驱动实现中没有实际的物理芯片驱动,取而代之的是proc设备节点(即proc节点),可以把proc设备节点认为是虚拟芯片单元,在设备节点信息中,维护相应page缓冲数据区,tty和proc设备节点通过此缓冲区实现数据交互。在proc节点侧,实现设备驱动程序层,该层设计了proc文件访问的一系列方法,用户态应用从proc方向open,read,write,ioctl等方式访问某个proc文件设备节点。tty第三层tty.write()对应着proc侧的驱动层的procdriver.read(),这样便可以实现tty向proc下行方向的数据流动。反之,从proc向tty的上行方向数据流动是相对应的,此处不再赘述。这2个设备节点(proc节点和tty节点)数据交互没有开辟数据缓存,而是借用第二层线路规程tty缓存区,通过tty标准操作api方法来实现数据传输。
以下结合图3说明proc代理随路方式实现热插拔hotplug原理。本实例中,以256个tty设备节点,256个proc设备节点来具体阐述。虚拟串口驱动加载时,首先分别建立256个tty和256个proc设备节点信息资源,驱动tty主设备号由系统动态分配,注册tty驱动程序,设置动态加载tty设备节点方式。此时,静态初始化256个proc设备节点,每个proc节点作为媒体流的数据通道,同时也做信令控制通道,通过该节点去添加或删除对应的tty设备节点,并建立一一对应的关联关系。这样就实现信令和媒体共享的随路工作方式。
图4为根据本发明优选实施例的proc代理随路方式的方法流程示意图。如图4所示,该方法包括以下处理:
步骤S402,设备节点信息资源初始化,需要构建256个tty节点,256个proc节点资源,这些资源保存相应节点的相关信息,为相应节点耦联做准备。无其他代理节点。
步骤S404,向内核申请开辟tty驱动资源,设置驱动相关参数和配置注册tty驱动信息。
步骤S406,设置proc节点根目录,并注册proc驱动,向内核注册256个静态proc节点;
步骤S408,建立与proc节点自身相对应tty节点hotplug功能的关联。其中,上述建立与proc节点自身相对应tty节点hotplug功能的关联,包括:
步骤S408-1,用户态应用程序网络服务器模块通过ioctl接口操纵proc节点,增加一一对应tty节点,无法添加其他tty节点。
步骤S408-2,添加对应tty节点。
步骤S408-3,建立tty设备(节点)和proc节点资源耦联。
步骤S408-4,动态删除tty设备(节点),用户态不能使用已删除设备。
步骤S408-5,拆除tty设备和proc节点信息资源耦联,标志已经删除,同时为下一次添加该节点做准备工作。
需要指出的是,也可以创建单独proc节点作为信令通道,控制所有tty节点增加删除,亦即一个proc节点可以控制多个tty节点,这是共路信令的实现方式。
图5为基于图4所示实施例的卸载方法流程示意图,如图5所示,该卸载流程包括:
步骤S502,驱动卸载时,如果系统中存在tty相关节点,删除剩余tty节点。
步骤S504,卸载256个静态proc节点。
步骤S506,卸载tty驱动,释放tty和proc设备节点信息资源。
图6为根据本发明实施例的基于proc技术的虚拟串口热插拔的实现系统的结构框图。如图6所示,该系统包括:
构建模块60,用于构建tty节点资源和proc节点资源,其中,tty节点资源包括tty节点的信息,proc节点资源包括proc节点的信息;
获取模块62,用于获取与tty节点资源对应的tty驱动资源,proc节点的驱动信息和proc节点;
关联模块64,用于根据上述构建模块60、获取模块62得到的tty节点资源、proc节点资源及tty驱动资源建立proc节点与tty节点的热插拔功能的关联关系。
优选地,上述获取模块62,还用于获取驱动参数和注册tty节点驱动信息以及在内核中设置proc节点根目录,并注册proc驱动,向内核注册静态proc节点。
优选地,上述关联模块64,包括:
节点增加单元640,用于通过ioctl接口操纵上述获取模块62获取的proc节点,增加与该proc节点对应的tty节点;
关联建立单元642,用于建立tty节点和proc节点的耦联,该关联建立单元642,可以根据上述构建模块60构建的tty节点资源和proc节点资源,以及上述获取模块62获取的与tty节点资源对应的tty驱动资源,proc节点的驱动信息和proc节点建立tty节点和proc节点的耦联。
优选地,如图7所示,上述关联模块64,还可以包括:删除单元644,用于删除与tty节点资源对应的tty节点;拆除单元646,用于拆除上述关联建立单元642建立的tty节点和proc节点的耦联。
在上述实施例的优选实施过程中,上述系统还可以包括:删除模块66,用于删除与proc节点资源对应的proc节点,其中,该proc节点由上述获取模块62获得;以及释放模块68,用于释放上述构建模块60构建的tty节点资源和proc节点资源。
需要注意的是,上述系统中的各模块相关结合的优选工作方式具体可以参见上述方法实施例的描述,此处不再赘述。
综合上述实施例可以看出,上述实施例将信令通道和媒体通道统一使用proc技术实现,将信令通道作为媒体通道的一个扩展,从而使得媒体通道的相关实现可以直接应用到信令通道,实现信令和媒体的统一处理,简化了程序实现。从驱动程序内部设计设备节点,增删设备节点也无需知道主设备号,避免了静态分配驱动主设备号潜在的冲突可能,同时也避免了静态分配节点潜在的资源浪费。另外,对于bridge设备(如proc节点)静态创建的方式,对应的信令通道可以和媒体通道复用,不需要建立单独的信令通道,这种实现方式相当于随路信令的方式,在通道建立初始,作为信令通道使用,信令下达后,当tty设备创建以及和对应的bridge设备关联后,通道模式切换到媒体通道,完成后续的媒体转发,当然,也可以利用共路信令的实现方式即创建单独proc节点作为信令通道,控制所有tty节点增加删除,从而节省了系统资源。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种基于proc技术的虚拟串口热插拔的实现方法,其特征在于,包括:
构建tty节点资源和proc节点资源,其中,所述tty节点资源包括tty节点的信息,所述proc节点资源包括proc节点的信息;
获取与所述tty节点资源对应的tty驱动资源以及获取与所述proc节点对应的所述proc节点的驱动信息和所述proc节点;
根据所述tty节点资源、所述proc节点资源、所述tty驱动资源和所述获取的proc节点,建立所述proc节点与所述tty节点的热插拔功能的关联关系;
其中,所述建立所述proc节点与所述tty节点的热插拔功能的关联关系,包括:
通过ioctl接口操纵所述proc节点,增加与该proc节点对应的tty节点;
建立所述tty节点和所述proc节点的耦联;
删除与所述tty节点资源对应的tty节点;
拆除所述tty节点和所述proc节点的耦联。
2.根据权利要求1所述的方法,其特征在于,
所述获取与所述tty节点资源对应的tty驱动资源,包括:获取驱动参数以及所述tty节点的驱动信息;
所述获取proc节点的驱动信息和所述proc节点,包括:在内核中设置proc节点根目录,并注册proc驱动,向内核注册proc节点。
3.根据权利要求1至2任一项所述的方法,其特征在于,所述建立所述proc节点与所述tty节点的热插拔功能的关联关系之后,还包括:
删除与所述proc节点资源对应的proc节点;
释放所述tty节点资源和所述proc节点资源。
4.一种基于proc技术的虚拟串口热插拔的实现系统,其特征在于,包括
构建模块,用于构建tty节点资源和proc节点资源,其中,所述tty节点资源包括tty节点的信息,所述proc节点资源包括proc节点的信息;
获取模块,用于获取与所述tty节点资源对应的tty驱动资源以及获取与所述proc节点对应的所述proc节点的驱动信息和所述proc节点;
关联模块,用于根据所述tty节点资源、所述proc节点资源、所述tty驱动资源和所述获取的proc节点,建立所述proc节点与所述tty节点的热插拔功能的关联关系;
其中,所述关联模块,包括:
节点增加单元,用于通过ioctl接口操纵所述proc节点,增加与该proc节点对应的tty节点;
关联建立单元,用于建立所述tty节点和所述proc节点的耦联;
删除单元,用于删除与所述tty节点资源对应的tty节点;
拆除单元,用于拆除所述tty节点和所述proc节点的耦联。
5.根据权利要求4所述的系统,其特征在于,
所述获取模块,还用于获取驱动参数和注册tty节点驱动信息,在内核中设置proc节点根目录,并注册proc驱动,向内核注册静态proc节点。
6.根据权利要求4至5任一项所述的系统,其特征在于,所述系统还包括:
删除模块,用于删除与所述proc节点资源对应的proc节点;
释放模块,用于释放所述tty节点资源和所述proc节点资源。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010593522.9A CN102546347B (zh) | 2010-12-17 | 2010-12-17 | 基于proc技术的虚拟串口热插拔的实现方法及系统 |
PCT/CN2011/077502 WO2012079371A1 (zh) | 2010-12-17 | 2011-07-22 | 基于proc技术的虚拟串口热插拔的实现方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010593522.9A CN102546347B (zh) | 2010-12-17 | 2010-12-17 | 基于proc技术的虚拟串口热插拔的实现方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102546347A CN102546347A (zh) | 2012-07-04 |
CN102546347B true CN102546347B (zh) | 2016-03-30 |
Family
ID=46244045
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010593522.9A Expired - Fee Related CN102546347B (zh) | 2010-12-17 | 2010-12-17 | 基于proc技术的虚拟串口热插拔的实现方法及系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN102546347B (zh) |
WO (1) | WO2012079371A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109032972A (zh) * | 2018-07-25 | 2018-12-18 | 郑州云海信息技术有限公司 | 一种热插拨事件的处理方法及系统 |
CN111625489B (zh) * | 2020-05-27 | 2022-06-14 | 深圳市元征科技股份有限公司 | 一种串口数据分发方法、装置、设备、介质 |
CN112416521A (zh) * | 2020-11-24 | 2021-02-26 | 超越科技股份有限公司 | 一种基于linux tty子系统的串口虚拟化的实现方法 |
CN113360443B (zh) * | 2021-05-31 | 2022-07-08 | 浪潮电子信息产业股份有限公司 | 一种串口卡通讯实现方法、装置、设备及可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1881936A (zh) * | 2006-05-09 | 2006-12-20 | 国家数字交换系统工程技术研究中心 | 一种路由器虚拟驱动模块的动态加载与控制方法 |
CN101398791A (zh) * | 2007-09-25 | 2009-04-01 | 神州亿品科技有限公司 | 自动监测usb磁盘的方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69527948T2 (de) * | 1994-03-15 | 2003-01-02 | Digi International, Inc. | System und verfahren zur kommunikation mit einem entfernten netzwerk-apparatus |
CN100396065C (zh) * | 2005-01-14 | 2008-06-18 | 清华大学 | 一种iSCSI存储系统的实现方法 |
CN101309121B (zh) * | 2007-05-18 | 2013-01-23 | 希姆通信息技术(上海)有限公司 | 实现Linux平台下无需内核添加驱动的MUX协议的方法 |
CN101894041A (zh) * | 2010-07-15 | 2010-11-24 | 中兴通讯股份有限公司 | 多虚拟串口系统及其通信方法 |
-
2010
- 2010-12-17 CN CN201010593522.9A patent/CN102546347B/zh not_active Expired - Fee Related
-
2011
- 2011-07-22 WO PCT/CN2011/077502 patent/WO2012079371A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1881936A (zh) * | 2006-05-09 | 2006-12-20 | 国家数字交换系统工程技术研究中心 | 一种路由器虚拟驱动模块的动态加载与控制方法 |
CN101398791A (zh) * | 2007-09-25 | 2009-04-01 | 神州亿品科技有限公司 | 自动监测usb磁盘的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102546347A (zh) | 2012-07-04 |
WO2012079371A1 (zh) | 2012-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2571536C2 (ru) | Способ, система и управляющий мост для получения информации о топологии расширения порта | |
JP4632574B2 (ja) | 記憶装置およびファイルデータのバックアップ方法およびファイルデータのコピー方法 | |
US7343449B2 (en) | Storage subsystem and storage system | |
CN102880573B (zh) | 一种基于Linux系统的串行RapidIo数据传输方法 | |
CN103095544A (zh) | 虚拟交换机的可扩展性 | |
CN107959614B (zh) | 一种基于网络命名空间的多租户自定义组网方法、系统 | |
CN103324532B (zh) | 虚拟机的动态迁移方法及系统 | |
CN104077199B (zh) | 基于共享磁盘的高可用集群的隔离方法和系统 | |
CN103346981A (zh) | 虚拟交换方法、相关装置和计算机系统 | |
US20150043379A1 (en) | Method of controlling virtual router, computer-readable recording medium, and control device | |
CN102546347B (zh) | 基于proc技术的虚拟串口热插拔的实现方法及系统 | |
ATE387050T1 (de) | Gemeinsam genutzte ressourcen in einer multimanager-umgebung | |
CN103500073A (zh) | 一种数据块迁移方法及装置 | |
CN106899478A (zh) | 电力测试业务通过云平台实现资源弹性扩展的方法 | |
WO2002028024A3 (en) | Architecture for a wireless local area network node | |
CN102171655A (zh) | 复合设备仿真 | |
CN100464535C (zh) | 一种路由器虚拟驱动模块的动态加载与控制方法 | |
CN107547258A (zh) | 一种网络策略的实现方法和装置 | |
CN103222286A (zh) | 路由交换装置、网络交换系统和路由交换方法 | |
CN112929206B (zh) | 一种云网环境下云物理机配置的方法与装置 | |
CN102710772B (zh) | 一种基于云平台的海量数据通讯系统 | |
CN104660478A (zh) | 一种实现隧道间数据流串接的方法和装置 | |
CN114390101A (zh) | 一种基于BGP组网的Kubernetes负载均衡方法 | |
CN115225451A (zh) | 一种计算节点管理系统及针对多个计算节点的管理方法 | |
EP1783612A1 (en) | Storage subsystem and storage system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160330 Termination date: 20191217 |