一种在非事件驱动方式的os中实现对设备的热插拔的方法

文档序号:9616128阅读:380来源:国知局
一种在非事件驱动方式的os中实现对设备的热插拔的方法
【技术领域】
[0001]本发明涉及一种在非事件驱动方式的0S中实现对设备的热插拔的方法。
【背景技术】
[0002]AV(Aud1 and Visual)设备中,有的可以和个人电脑组合使用,还有的可以通过网络进行音频数据和视频数据的输入输出。和这样的AV设备连接的个人电脑中通常使用的是多任务方式的0S。
[0003]而在Microsoft Windows (注册商标)等事件驱动方式的OS中,用户应用程序是这样构成的,它在从0S接收到系统信息后,执行启动、结束、绘制图形等相应的处理。因此,在事件驱动方式的0S中,USB (Universal Serial Bus通用串行总线〉的连接等热插拔事件也必须由用户应用程序从0S接受系统信息后,才可以执行必要的处理。
[0004]然而,在Linux (注册商标)等非事件驱动方式的0S中,没有准备事件驱动方式的0S中的系统信息。因此,用户应用程序为了捕捉热插拔事件,必须不断进行轮询。S卩,如日本专利特开2002 - 300176号公报中所公开的内容,用户应用程序间隔固定时间对总线进行监测,一旦发生热插拔事件,立即运行相应的处理。
[0005]图1表示这种通过轮询方式处理热插拔事件的概要。以下说明中所述的热插拔处理,是指将大容量存储设备通过USB连接于安装有Linus Kernel 2.4 (注册商标)的个人电脑的情况。
[0006]即,在Linux (注册商标)的内核空间KERNEL中,备有USB核心驱动程序usbcore和用于USB大容量存储的类驱动程序usb-storage。此外,在用户空间USER中,备有热插拔hotplug以及USB脚本usb-storage。当USB大容量存储设备连接到个人电脑上时,如图1中a所示,通过延长在内核空间中备有的核心驱动程序usbcore的探查函数probe的处理,调出热插拔脚本此时,设定各种环境变量,执行热插拔脚本hotplug。
[0007]这种情况下,表示与USB设备连接的值被设定于部分环境变量。然后如图1中b所示,热插拔脚本hotplug运行触发其执行的事件所对应的脚本。此时,按照图1中3设定的环境变量执行USB脚本usb.agent.接着,USB脚本usb.agent装入触发其执行的事件所对应的类驱动程序,这里如图1中c所示,装入USB大容量存储设备的类驱动程序usb-storage。然后如图1中d所示,USB核心驱动程序执行更新虚拟文件/proc/bus/usb/devices的内容等一系列处理。
[0008]因此,用户应用程序只要通过轮询,监视虚拟文件/proc/bus/usb/devices,便可以在将大容量存储设备进行USB连接时,使用该大容量存储设备。但现行的Linux (注册商标)的热插拔处理只能在该类驱动程序动态嵌入时使用。
[0009]然而如上所述,在通过轮询捕捉热插拔事件时,如果缩短轮询的时间间隔,则系统的负担就会增大。但如果相反将轮询间隔延长,在热插拔事件发生之后到执行处理之前会发生时间延迟。
[0010]这个问题通过采用高速CPU可在一定程度上避免或减轻,但这时需要的CPU价格十分高昂。此外,当AV设备等的系统控制电路是由微型计算机构成时,整体中的CPU价格也很重要,如果价格昂贵,即便速度快也无法采用。

【发明内容】

[0011]为解决上述现有的缺点,本发明的主要目的在于提供一种实用的在非事件驱动方式的0S中实现对设备的热插拔的方法,减轻系统负担,控制系统成本上升。
[0012]为达成以上所述的目的,本发明的一种在非事件驱动方式的0S中实现对设备的热插拔的方法采取如下技术方案:
一种在非事件驱动方式的0S中实现对设备的热插拔的方法,其特征在于,在出现设备安装或拆卸时,通过内核的核心驱动程序调用热插拔脚本,所述热插拔脚本在进行所述调用之后,执行该热插拔脚本本身描述的特定处理,然后调用挂钩程序,所述挂钩程序在被调用后,运行热插拔管理程序,获取所述设备安装或拆卸的相关信息,所述热插拔管理程序中,热插拔端口监督程序利用所述挂钩程序运行,接受所述热插拔脚本环境变量中包含的信息,热插拔库从所述热插拔端口监督程序获取所述信息,API提供给用户应用程序,所述内核是Linux (注册商标)的内核。
[0013]具备当出现设备安装或拆卸时、通过内核的核心驱动程序调用并执行本身所描述的特定处理的热插拔脚本,由该热插拔脚本最后的处理调用的挂钩程序;以及由该挂钩程序运行、并将所述设备安装拆卸的相关信息提供给用户应用程序的热插拔管理程序,所述热插拔管理程序包含热插拔端口监督程序及热插拔库,所述热插拔端口监督程序由所述挂钩程序调用,并接受热插拔脚本环境变量中包含的信息,所述热插拔库从该热插拔端口监督程序获取所述信息,并将API提供给用户应用程序。
[0014]采用如上技术方案的本发明,具有如下有益效果:
本发明减轻系统负担,控制系统成本上升。
[0015]
【附图说明】
[0016]图1是表示以往的设备管理方法及管理系统的方框图。
[0017]图2是表示本发明所述的设备管理方法及管理系统的方框图。
【具体实施方式】
[0018]为了进一步说明本发明,下面结合附图进一步进行说明:
如图1所示,在目前使用的Linux (注册商标)中,当将USB (universal serial bus)设备热插拔连接时,无论连接的是什么设备,一旦USB大容量存储设备连接到个人电脑上,则如图1中3所示,是通过延长内核空间KERENEL中准备的核心驱动程序usbcore中探查函数probe的处理,调用热插拔脚本hotplug。
[0019]本发明着眼于这一点,利用热插拔脚本hotplug实现热插拔处理。以下,参照图2说明在装入kernel2.4Linux (注册商标)的个人电脑上、将大容量存储设备USB连接时的热插拔处理。
[0020]本发明与上述图1中所示的系统一样,在Linux (注册商标)的内核空间中,备有USB核心驱动程序usbcore以及用于USB大容量存储的类驱动程序usb-storage,在用户空间USER中有热插拔脚本hotplug以及USB脚本use.agent。
[0021]此外,在用户空间USER中,不仅设有挂钩程序hooker,并且设有构成热插拔管理程序pnpmanager的热插拔端口监督程序pnomger以及热插拔库libpnpmgr。
[0022]此时由于挂钩程序hooker是由热插拔脚本hotplug执行,因此在热插拔脚本hotplug的最后,追加用于调用挂钩程序hooker的代码。此外,挂钩程序pnpmanager的信息队列,将环境变量传递给该热插拔管理程序pnpmanager。
[0023]进而,热插拔端口监督程序pnpmgr依据来自程序的信息,收集设备信息,并依据需要,将事件通知给热插拔库libnpmgr。热插拔库libpnpmgr将API (Applicat1n ProgramInterface)提供给用户应用程序。
[0024]API提供的功能中包含登记或解除事件等待的功能。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1