CN105373393A - 一种在非事件驱动方式的os中实现对设备的热插拔的方法 - Google Patents
一种在非事件驱动方式的os中实现对设备的热插拔的方法 Download PDFInfo
- Publication number
- CN105373393A CN105373393A CN201410409229.0A CN201410409229A CN105373393A CN 105373393 A CN105373393 A CN 105373393A CN 201410409229 A CN201410409229 A CN 201410409229A CN 105373393 A CN105373393 A CN 105373393A
- Authority
- CN
- China
- Prior art keywords
- hot plug
- script
- equipment
- program
- information
- 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.)
- Withdrawn
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开一种在非事件驱动方式的OS中实现对设备的热插拔的方法,其特征在于,在出现设备安装或拆卸时,通过内核的核心驱动程序调用热插拔脚本,所述热插拔脚本在进行所述调用之后,执行该热插拔脚本本身描述的特定处理,然后调用挂钩程序,所述挂钩程序在被调用后,运行热插拔管理程序,获取所述设备安装或拆卸的相关信息,所述热插拔管理程序中,热插拔端口监督程序利用所述挂钩程序运行,接受所述热插拔脚本环境变量中包含的信息,热插拔库从所述热插拔端口监督程序获取所述信息,API提供给用户应用程序,所述内核是Linux(注册商标)的内核。本发明减轻系统负担,控制系统成本上升。
Description
技术领域
本发明涉及一种在非事件驱动方式的OS中实现对设备的热插拔的方法。
背景技术
AV(Audio
and Visual)设备中,有的可以和个人电脑组合使用,还有的可以通过网络进行音频数据和视频数据的输入输出。和这样的AV设备连接的个人电脑中通常使用的是多任务方式的OS。
而在Microsoft Windows(注册商标)等事件驱动方式的OS中,用户应用程序是这样构成的,它在从OS接收到系统信息后,执行启动、结束、绘制图形 等相应的处理。因此,在事件驱动方式的OS中,USB(Universal Serial Bus通用串行总线〉的连接等热插拔事件也必须由用户应用程序从OS接受系统信息后,才可以执行必要的处理。
然而,在Linux(注册商标)等非事件驱动方式的OS中,没有准备事件驱动方式的OS中的系统信息。因此,用户应用程序为了捕捉热插拔事件,必须不断进行轮询。即,如日本专利特开2002 — 300176号公报中所公开的内容,用户应用程序间隔固定时间对总线进行监测,一旦发生热插拔事件,立即运行相应的处理。
图1表示这种通过轮询方式处理热插拔事件的概要。以下说明中所述的热插拔处理,是指将大容量存储设备通过USB连接于安装有Linus Kernel 2.4 (注册商标)的个人电脑的情况。
即,在Linux(注册商标)的内核空间KERNEL中,备有USB核心驱动程序usbcore和用于USB大容量存储的类驱动程序usb-storage。此外,在用户空间USER中,备有热插拔hotplug以及USB脚本usb-storage。当USB大容量存储设备连接到个人电脑上时,如图1中a所示,通过延长在内核空间中备有的核心驱动程序usbcore的探查函数probe的处理,调出热插拔脚本此时,设定各种环境变量,执行热插拔脚本hotplug。
这种情况下,表示与USB设备连接的值被设定于部分环境变量。 然后如图1中b所示,热插拔脚本hotplug运行触发其执行的事件所对应的脚本。此时,按照图1中3设定的环境变量执行USB脚本usb.agent.
接着,USB脚本usb.agent装入触发其执行的事件所对应的类驱动程序,这里如图1中c所示,装入USB大容量存储设备的类驱动程序usb-storage。 然后如图1中d所示,USB核心驱动程序执行更新虚拟文件/proc/bus/usb/devices的内容等一系列处理。
因此,用户应用程序只要通过轮询,监视虚拟文件 /proc/bus/usb/devices,便可以在将大容量存储设备进行USB连接时,使用该大容量存储设备。但现行的Linux(注册商标)的热插拔处理只能在该类驱动程序动态嵌入时使用。
然而如上所述,在通过轮询捕捉热插拔事件时,如果缩短轮询的时间间隔,则系统的负担就会增大。但如果相反将轮询间隔延长,在热插拔事件发生之后到执行处理之前会发生时间延迟。
这个问题通过采用高速CPU可在一定程度上避免或减轻,但这时需要的CPU价格十分高昂。此外,当AV设备等的系统控制电路是由微型计算机构成时,整体中的CPU价格也很重要,如果价格昂贵,即便速度快也无法采用。
发明内容
为解决上述现有的缺点,本发明的主要目的在于提供一种实用的在非事件驱动方式的OS中实现对设备的热插拔的方法,减轻系统负担,控制系统成本上升。
为达成以上所述的目的,本发明的一种在非事件驱动方式的OS中实现对设备的热插拔的方法采取如下技术方案:
一种在非事件驱动方式的OS中实现对设备的热插拔的方法 ,其特征在于,在出现设备安装或拆卸时,通过内核的核心驱动程序调用热插拔脚本,所述热插拔脚本在进行所述调用之后,执行该热插拔脚本本身描述的特定处理,然后调用挂钩程序,所述挂钩程序在被调用后,运行热插拔管理程序,获取所述设备安装或拆卸 的相关信息,所述热插拔管理程序中,热插拔端口监督程序利用所述挂钩程序运行,接受所述热插拔脚本环境变量中包含的信息,热插拔库从所述热插拔端口监督程序获取所述信息,API提供给用户应用程序,所述内核是Linux(注册商标)的内核。
具备当出现设备安装或拆卸时、通过内核的核心驱动程序调用并执行本身所描 述的特定处理的热插拔脚本,由该热插拔脚本最后的处理调用的挂钩程序;以及由该挂钩程序运行、并将所述设备安装拆卸的相关信息提供给用户应用程序的热插拔管理程序,所述热插拔管理程序包含热插拔端口监督程序及热插拔库,所述热插拔端口监督程序由所述挂钩程序调用,并接受热插拔脚本环境变量中包含的信息,所述热插拔库从该热插拔端口监督程序获取所述信息,并将API提供给用户应用程序。
采用如上技术方案的本发明,具有如下有益效果:
本发明减轻系统负担,控制系统成本上升。
附图说明
图1是表示以往的设备管理方法及管理系统的方框图。
图2是表示本发明所述的设备管理方法及管理系统的方框图。
具体实施方式
为了进一步说明本发明,下面结合附图进一步进行说明:
如图1所示,在目前使用的Linux(注册商标)中,当将USB(universal serial
bus)设备热插拔连接时,无论连接的是什么设备,一旦USB大容量存储设备连接到个人电脑上,则如图1中3所示,是通过延长内核空间KERENEL中准备的核心驱动程序usbcore中探查函数probe的处理,调用热插拔脚本 hotplug。
本发明着眼于这一点,利用热插拔脚本hotplug实现热插拔处理。以下, 参照图2说明在装入kernel2.4Linux (注册商标)的个人电脑上、将大容量存储设备USB连接时的热插拔处理。
本发明与上述图1中所示的系统一样,在Linux(注册商标)的内核空间中,备有USB核心驱动程序usbcore以及用于USB大容量存储的类驱动程序usb-storage,在用户空间USER中有热插拔脚本hotplug以及USB脚本use.agent。
此外,在用户空间USER中,不仅设有挂钩程序hooker,并且设有构成热插拔管理程序pnpmanager的热插拔端口监督程序pnomger以及热插拔库libpnpmgr。
此时由于挂钩程序hooker是由热插拔脚本hotplug执行,因此在热插拔脚本hotplug的最后,追加用于调用挂钩程序hooker的代码。此外,挂钩程序pnpmanager的信息队列,将环境变量传递给该 热插拔管理程序pnpmanager。
进而,热插拔端口监督程序pnpmgr依据来自程序的信息,收集设 备信息,并依据需要,将事件通知给热插拔库libnpmgr。热插拔库libpnpmgr 将API(Application
Program Interface)提供给用户应用程序。
API提供的功能中包含登记或解除事件等待的功能。此功能用于登记或解除使用热插拔端口监督程序pnpmgr功能。进行登记后,便可以获取事件发生的通知以及设备信息。
API还获取设备信息的功能。这项功能用于获取当前与个人电脑连接的设 备信息。这里取得提供的信息中,包含用户应用程序访问该设备所需的所有信 息0
API还具有进行事件通知的功能。这项功能用于在登记时向预先指定的回调函数通知热插拔设备的安装拆卸信息以及设备种类。
然后,在挂钩程序hooker与热插拔端口监督程序pnpmgr之间、以及热插拔端口监督程序pnpmgr与热插拔库libpnpgr之间,通过信息交换实现进程间的通讯。
如果采用这种结构,当USB大容量存储设备连接于个人电脑时,将执行图1中说明的相同处理。
即,当USB大容量设备连接于个人电脑时,如图2中的a所示,通过延长内核空间KERNEL中预备的核心驱动程序usbcore中挂钩函数probe的处理,可以调用热插拔脚本hotplug。此时,设定各种环境变量,执行热插拔脚本hotplug。
然后如图2中b所示,热插拔脚本hotplug运行触发其执行的事件所对应的脚本。此时,按照图1中a所设定的环境变量执行USB脚本usb.storage。
接着,USB脚本usb.agent装入触发其执行的事件所对应的类驱动程序,这里如图2中d所示,装入USB大容量存储设备的类驱动程序usb-storage。 然后如图2中d所示,USB核心驱动程序usbcore执行更新虚拟文件/proc/bus/sub/devices的内容等一系列处理。
因此,用户应用程序只要通过轮询,监视虚拟文件/proc/bus/sub/devices,便可以在将大容量存储设备进行USB连接时,使用该大容量存储设备。然而,现行的linux(注册商标)的热插拔处理只能在该类驱动程序动态嵌入时使用。
釆用本发明所述的系统,在运行上述处理之后,如图2中e所示,热插拔脚本hotplug将调用挂钩程序hooker。接着,如图2中f所示,挂钩程序hooker将热插拔脚本hotplug的环境变量通过信息方式传送给热插拔端口监督程序pnpmgr。
然后,热插拔端口监督程序pnpmgr如图2中g所示,依据来自挂钩程序hooker的信息,收集USB连接设备的相关信息。
这里,如图2中h所示,只要有用户应用程序在监视,热插拔端口监督程序pnpmgr就会将信息发送给热插拔库libnpgmr。
热插拔库libnpgmr从用户应用程序接受请求后,如图2中i所示,将向热插拔端口监督程序pnpmgr发送该请求。
本发明中,上述a〜i的处理是依次实施。
因此,当大容量存储设备进行USB连接时,便可使用该大存储设备。而一旦停止大存储设备的USB连接,通过同样的处理,可禁止该大容量存储设备的使用。
如此,通过使用图2所示的本发明所述系统,在Linux(注册商标)中便可实现热插拔。此时,从用户应用程序看,热插拔设备的追加及删除可不同步进行,并且不需要进行轮询。因此,从热插拔设备连接之后到执行相应的处理之间不会产生时间的延迟,不仅可减轻CPU的负担,并且可以控制成本的上升。
并且,由于热插拔管理程序pnpmanager被分割成热插拔端口监督程序pnpmgr和热插拔库libpnpmgr,因此它们之间的进程间通讯可隐蔽到用户应用程序之外。因此,用户应用程序在处理热插拔事件时与访问通常库时的处理方法相同。
此外,用户应用程序可通过将回调函数call back登记在热插拔端口监督程序pnpmgr,以不同步的方式接收事件信息,或者仅接收所关心的设备的事件信息。并且当内核空间KERNEL以及用户空间USER发生变更时,只需要在热插拔脚本hotplug最后添加一行用于调用挂钩程序hooker的代码即可,对系统没有影响。
在以上说明中,是针对将本发明适用于1158设备的热插拔事件的情况,但并非仅限于此,也可以适用于IEEER(Iistitute of Electrical and Engineer 电气及电子工程师学会)1394、网络适配器、PCMICIA(Personal
computer memory card international,PC机内存卡国际联合会) 卡等热插拔事件。
本发明并非仅限于参照附图说明的上述实施例,作为业内人士可知,于不脱离所附的权利要求范围及其主旨范围内,可进行各种变更、置换或同等操作工业上的实用性.
如上所述,使用本发明,可在例如Linux(注册商标)等非事件驱动方式的OS中实现热插拔。此外,从热插拔发生之后到运行相应处理之间不会产生时间延迟,并可减轻系统负担。而且也不需要使用高速CPU,因此可控制系统成本的上升。
Claims (2)
1.一种在非事件驱动方式的OS中实现对设备的热插拔的方法 ,其特征在于,在出现设备安装或拆卸时,通过内核的核心驱动程序调用热插拔脚本,所述热插拔脚本在进行所述调用之后,执行该热插拔脚本本身描述的特定处理,然后调用挂钩程序,所述挂钩程序在被调用后,运行热插拔管理程序,获取所述设备安装或拆卸
的相关信息,所述热插拔管理程序中,热插拔端口监督程序利用所述挂钩程序运行,接受所述热插拔脚本环境变量中包含的信息,热插拔库从所述热插拔端口监督程序获取所述信息,API提供给用户应用程序,所述内核是Linux(注册商标)的内核。
2.根据权利要求1所述的一种在非事件驱动方式的OS中实现对设备的热插拔的方法,其特征在于,具备当出现设备安装或拆卸时、通过内核的核心驱动程序调用并执行本身所描
述的特定处理的热插拔脚本,由该热插拔脚本最后的处理调用的挂钩程序;以及由该挂钩程序运行、并将所述设备安装拆卸的相关信息提供给用户应用程序的热插拔管理程序,所述热插拔管理程序包含热插拔端口监督程序及热插拔库,所述热插拔端口监督程序由所述挂钩程序调用,并接受热插拔脚本环境变量中包含的信息,所述热插拔库从该热插拔端口监督程序获取所述信息,并将API提供给用户应用程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410409229.0A CN105373393A (zh) | 2014-08-20 | 2014-08-20 | 一种在非事件驱动方式的os中实现对设备的热插拔的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410409229.0A CN105373393A (zh) | 2014-08-20 | 2014-08-20 | 一种在非事件驱动方式的os中实现对设备的热插拔的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105373393A true CN105373393A (zh) | 2016-03-02 |
Family
ID=55375621
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410409229.0A Withdrawn CN105373393A (zh) | 2014-08-20 | 2014-08-20 | 一种在非事件驱动方式的os中实现对设备的热插拔的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105373393A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107315607A (zh) * | 2017-06-21 | 2017-11-03 | 南京翼辉信息技术有限公司 | 一种驱动自适应加载系统 |
CN107479900A (zh) * | 2017-08-28 | 2017-12-15 | 北京翼辉信息技术有限公司 | 一种适用于实时操作系统的热插拔软件方案 |
CN107491405A (zh) * | 2017-07-17 | 2017-12-19 | 北京小鸟看看科技有限公司 | 一种实现头戴显示设备热插拔的方法、装置和终端设备 |
CN108600044A (zh) * | 2018-03-30 | 2018-09-28 | 新华三信息安全技术有限公司 | 一种接口状态获取方法、装置及设备 |
CN110750306A (zh) * | 2019-10-18 | 2020-02-04 | 厦门亿联网络技术股份有限公司 | 一种多类型设备热插拔统一识别的方法及系统 |
-
2014
- 2014-08-20 CN CN201410409229.0A patent/CN105373393A/zh not_active Withdrawn
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107315607A (zh) * | 2017-06-21 | 2017-11-03 | 南京翼辉信息技术有限公司 | 一种驱动自适应加载系统 |
CN107315607B (zh) * | 2017-06-21 | 2020-05-05 | 南京翼辉信息技术有限公司 | 一种驱动自适应加载系统 |
CN107491405A (zh) * | 2017-07-17 | 2017-12-19 | 北京小鸟看看科技有限公司 | 一种实现头戴显示设备热插拔的方法、装置和终端设备 |
CN107479900A (zh) * | 2017-08-28 | 2017-12-15 | 北京翼辉信息技术有限公司 | 一种适用于实时操作系统的热插拔软件方案 |
CN107479900B (zh) * | 2017-08-28 | 2021-01-26 | 北京翼辉信息技术有限公司 | 一种适用于实时操作系统的热插拔软件方案 |
CN108600044A (zh) * | 2018-03-30 | 2018-09-28 | 新华三信息安全技术有限公司 | 一种接口状态获取方法、装置及设备 |
CN110750306A (zh) * | 2019-10-18 | 2020-02-04 | 厦门亿联网络技术股份有限公司 | 一种多类型设备热插拔统一识别的方法及系统 |
CN110750306B (zh) * | 2019-10-18 | 2022-09-30 | 厦门亿联网络技术股份有限公司 | 一种多类型设备热插拔统一识别的方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100382058C (zh) | 设备管理方法 | |
CN105373393A (zh) | 一种在非事件驱动方式的os中实现对设备的热插拔的方法 | |
EP3575975B1 (en) | Method and apparatus for operating smart network interface card | |
US10127092B1 (en) | Method and apparatus for monitoring a message transmission frequency in a robot operating system | |
CN110659142A (zh) | 消息队列处理方法及装置、电子设备、存储介质 | |
CN113766487B (zh) | 云手机信息获取方法、装置、设备和介质 | |
CN111983412A (zh) | 监控系统、监控方法、监控终端及存储介质 | |
CN113641544B (zh) | 用于检测应用状态的方法、装置、设备、介质和产品 | |
CN110881224B (zh) | 一种网络长连接方法、装置、设备及存储介质 | |
CN113468021B (zh) | 监控性能数据的方法、装置、设备以及存储介质 | |
CN107479900B (zh) | 一种适用于实时操作系统的热插拔软件方案 | |
CN115543872A (zh) | 一种设备管理方法、装置及计算机存储介质 | |
CN109542198B (zh) | 一种控制pcie卡上电的方法及设备 | |
CN110209548B (zh) | 服务控制方法、系统、电子设备及计算机可读存储介质 | |
CN111159009A (zh) | 一种日志服务系统的压力测试方法及装置 | |
CN114034972B (zh) | 基于图像数据的智能电缆故障确定方法和装置 | |
CN110971697B (zh) | Redis单实例保护处理方法、装置、计算机设备及存储介质 | |
CN111984496B (zh) | 一种监控栈内存泄露的方法、装置、介质和电子设备 | |
CN108768768B (zh) | 用于业务系统的阻塞检测方法、装置及存储介质 | |
CN110888772A (zh) | 远程监控方法、监控装置、计算机设备及可读存储介质 | |
CN111857689A (zh) | 一种框架、框架的功能配置方法、终端及存储介质 | |
CN113010336A (zh) | 应用处理器死机现场调试方法及应用处理器 | |
CN113391896B (zh) | 任务处理方法及装置、存储介质及电子设备 | |
CN106776278B (zh) | 一种基于双核架构的dsp调试方法和装置 | |
CN116974957A (zh) | 系统保护电路、芯片系统、复位方法、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C04 | Withdrawal of patent application after publication (patent law 2001) | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20160302 |