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

文档序号:9616128阅读:来源:国知局
此功能用于登记或解除使用热插拔端口监督程序pnpmgr功能。进行登记后,便可以获取事件发生的通知以及设备信肩、Ο
[0025]API还获取设备信息的功能。这项功能用于获取当前与个人电脑连接的设备信息。这里取得提供的信息中,包含用户应用程序访问该设备所需的所有信息0
API还具有进行事件通知的功能。这项功能用于在登记时向预先指定的回调函数通知热插拔设备的安装拆卸信息以及设备种类。
[0026]然后,在挂钩程序hooker与热插拔端口监督程序pnpmgr之间、以及热插拔端口监督程序pnpmgr与热插拔库libpnpgr之间,通过信息交换实现进程间的通讯。
[0027]如果采用这种结构,当USB大容量存储设备连接于个人电脑时,将执行图1中说明的相同处理。
[0028]即,当USB大容量设备连接于个人电脑时,如图2中的a所示,通过延长内核空间KERNEL中预备的核心驱动程序usbcore中挂钩函数probe的处理,可以调用热插拔脚本hotplug。此时,设定各种环境变量,执行热插拔脚本hotplug。
[0029]然后如图2中b所示,热插拔脚本hotplug运行触发其执行的事件所对应的脚本。此时,按照图1中a所设定的环境变量执行USB脚本usb.storage。
[0030]接着,USB脚本usb.agent装入触发其执行的事件所对应的类驱动程序,这里如图2中d所示,装入USB大容量存储设备的类驱动程序usb-storage。然后如图2中d所示,USB核心驱动程序usbcore执行更新虚拟文件/proc/bus/sub/devices的内容等一系列处理。
[0031]因此,用户应用程序只要通过轮询,监视虚拟文件/proc/bus/sub/devices,便可以在将大容量存储设备进行USB连接时,使用该大容量存储设备。然而,现行的linux (注册商标)的热插拔处理只能在该类驱动程序动态嵌入时使用。
[0032]釆用本发明所述的系统,在运行上述处理之后,如图2中e所示,热插拔脚本hotplug将调用挂钩程序hooker。接着,如图2中f所示,挂钩程序hooker将热插拔脚本hotplug的环境变量通过信息方式传送给热插拔端口监督程序pnpmgr。
[0033]然后,热插拔端口监督程序pnpmgr如图2中g所示,依据来自挂钩程序hooker的信息,收集USB连接设备的相关信息。
[0034]这里,如图2中h所示,只要有用户应用程序在监视,热插拔端口监督程序pnpmgr就会将信息发送给热插拔库libnpgmr。
[0035]热插拔库libnpgmr从用户应用程序接受请求后,如图2中i所示,将向热插拔端口监督程序pnpmgr发送该请求。
[0036]本发明中,上述a — i的处理是依次实施。
[0037]因此,当大容量存储设备进行USB连接时,便可使用该大存储设备。而一旦停止大存储设备的USB连接,通过同样的处理,可禁止该大容量存储设备的使用。
[0038]如此,通过使用图2所示的本发明所述系统,在Linux (注册商标)中便可实现热插拔。此时,从用户应用程序看,热插拔设备的追加及删除可不同步进行,并且不需要进行轮询。因此,从热插拔设备连接之后到执行相应的处理之间不会产生时间的延迟,不仅可减轻CPU的负担,并且可以控制成本的上升。
[0039]并且,由于热插拔管理程序pnpmanager被分割成热插拔端口监督程序pnpmgr和热插拔库libpnpmgr,因此它们之间的进程间通讯可隐蔽到用户应用程序之外。因此,用户应用程序在处理热插拔事件时与访问通常库时的处理方法相同。
[0040]此外,用户应用程序可通过将回调函数call back登记在热插拔端口监督程序pnpmgr,以不同步的方式接收事件信息,或者仅接收所关心的设备的事件信息。并且当内核空间KERNEL以及用户空间USER发生变更时,只需要在热插拔脚本hotplug最后添加一行用于调用挂钩程序hooker的代码即可,对系统没有影响。
[0041]在以上说明中,是针对将本发明适用于1158设备的热插拔事件的情况,但并非仅限于此,也可以适用于IEEER(Iistitute of Electrical and Engineer电气及电子工程师学会)1394、网络适配器、PCMICIA (Personal computer memory card internat1nal, PC机内存卡国际联合会)卡等热插拔事件。
[0042]本发明并非仅限于参照【附图说明】的上述实施例,作为业内人士可知,于不脱离所附的权利要求范围及其主旨范围内,可进行各种变更、置换或同等操作工业上的实用性.如上所述,使用本发明,可在例如Linux (注册商标)等非事件驱动方式的0S中实现热插拔。此外,从热插拔发生之后到运行相应处理之间不会产生时间延迟,并可减轻系统负担。而且也不需要使用高速CPU,因此可控制系统成本的上升。
【主权项】
1.一种在非事件驱动方式的os中实现对设备的热插拔的方法,其特征在于,在出现设备安装或拆卸时,通过内核的核心驱动程序调用热插拔脚本,所述热插拔脚本在进行所述调用之后,执行该热插拔脚本本身描述的特定处理,然后调用挂钩程序,所述挂钩程序在被调用后,运行热插拔管理程序,获取所述设备安装或拆卸的相关信息,所述热插拔管理程序中,热插拔端口监督程序利用所述挂钩程序运行,接受所述热插拔脚本环境变量中包含的信息,热插拔库从所述热插拔端口监督程序获取所述信息,API提供给用户应用程序,所述内核是Linux (注册商标)的内核。2.根据权利要求1所述的一种在非事件驱动方式的OS中实现对设备的热插拔的方法,其特征在于,具备当出现设备安装或拆卸时、通过内核的核心驱动程序调用并执行本身所描述的特定处理的热插拔脚本,由该热插拔脚本最后的处理调用的挂钩程序;以及由该挂钩程序运行、并将所述设备安装拆卸的相关信息提供给用户应用程序的热插拔管理程序,所述热插拔管理程序包含热插拔端口监督程序及热插拔库,所述热插拔端口监督程序由所述挂钩程序调用,并接受热插拔脚本环境变量中包含的信息,所述热插拔库从该热插拔端口监督程序获取所述信息,并将API提供给用户应用程序。
【专利摘要】本发明公开一种在非事件驱动方式的OS中实现对设备的热插拔的方法,其特征在于,在出现设备安装或拆卸时,通过内核的核心驱动程序调用热插拔脚本,所述热插拔脚本在进行所述调用之后,执行该热插拔脚本本身描述的特定处理,然后调用挂钩程序,所述挂钩程序在被调用后,运行热插拔管理程序,获取所述设备安装或拆卸的相关信息,所述热插拔管理程序中,热插拔端口监督程序利用所述挂钩程序运行,接受所述热插拔脚本环境变量中包含的信息,热插拔库从所述热插拔端口监督程序获取所述信息,API提供给用户应用程序,所述内核是Linux(注册商标)的内核。本发明减轻系统负担,控制系统成本上升。
【IPC分类】G06F9/445
【公开号】CN105373393
【申请号】CN201410409229
【发明人】何阳, 米奇
【申请人】西安慧泽知识产权运营管理有限公司
【公开日】2016年3月2日
【申请日】2014年8月20日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1