1.一种设备管理方法,其特征在于,
在出现设备安装或拆卸时,通过内核的核心驱动程序调用热插拔脚本,
在调用该热插拔脚本之后,执行该热插拔脚本本身描述的特定处理,然后 调用挂钩程序,
该挂钩程序在被调用后,运行热插拔管理程序,获取所述设备安装或拆卸 的相关信息,
所述热插拔管理程序中,热插拔端口监督程序利用所述挂钩程序运行,接 受所述热插拔脚本环境变量中包含的信息,热插拔库从所述热插拔端口监督程 序获取所述信息,并将API提供给用户应用程序。
2.如权利要求1所述的设备管理方法,其特征在于,
所述内核是Linux的内核。
技术领域\n本发明涉及一种设备管理方法及管理系统,用于在非事件驱动方式的 OS(Operating System,操作系统)中,实现对设备(外围设备)的热插拔功能。\n本专利申请以2003年3月7日在日本提出专利申请的日本专利申请编号 2003-060889为基础,主张优先权,并通过参照的方式引用于本专利申请。\n背景技术\nAV(Audio and Visual,视听)设备中,有的可以和个人电脑组合使用,还 有的可以通过网络进行音频数据和视频数据的输入输出。和这样的AV设备连 接的个人电脑中通常使用的是多任务方式的OS。\n而在Microsoft Windows(注册商标)等事件驱动方式的OS中,用户应用程 序是这样构成的,它在从OS接收到系统信息后,执行启动、结束、绘制图形 等相应的处理。因此,在事件驱动方式的OS中,USB(Universal Serial Bus, 通用串行总线)的连接等热插拔事件也必须由用户应用程序从OS接受系统信息 后,才可以执行必要的处理。\n然而,在Linux(注册商标)等非事件驱动方式的OS中,没有准备事件驱动 方式的OS中的系统信息。因此,用户应用程序为了捕捉热插拔事件,必须不 断进行轮询。即,如日本专利特开2002-300176号公报中所公开的内容,用 户应用程序间隔固定时间对总线进行监测,一旦发生热插拔事件,立即运行相 应的处理。\n图1表示这种通过轮询方式处理热插拔事件的概要。以下说明中所述的热 插拔处理,是指将大容量存储设备通过USB连接于安装有Linus Kernel 2.4(注 册商标)的个人电脑的情况。\n即,在Linux(注册商标)的内核空间KERNEL中,备有USB核心驱动程序 usbcore和用于USB大容量存储的类驱动程序usb-storage。此外,在用户空 间USER中,备有热插拔脚本hotplug以及USB脚本usb.agent。当USB大容量 存储设备连接到个人电脑上时,如图1中a所示,通过延长在内核空间KERNEL 中备有的核心驱动程序usbcore的探查函数probe的处理,调出热插拔脚本 hotplug。此时,设定各种环境变量,执行热插拔脚本hotplug。\n这种情况下,表示与USB设备连接的值被设定于部分环境变量。\n然后如图1中b所示,热插拔脚本hotplug运行触发其执行的事件所对应 的脚本。此时,按照图1中a设定的环境变量执行USB脚本usb.agent。\n接着,USB脚本usb.agent装入触发其执行的事件所对应的类驱动程序, 这里如图1中c所示,装入USB大容量存储设备的类驱动程序usb-storage。 然后如图1中d所示,USB核心驱动程序usbcore执行更新虚拟文件 /proc/bus/usb/devices的内容等一系列处理。\n因此,用户应用程序只要通过轮询,监视虚拟文件 /proc/bus/usb/devices,便可以在将大容量存储设备进行USB连接时,使用 该大容量存储设备。但现行的Linux(注册商标)的热插拔处理只能在该类驱动 程序动态嵌入时使用。\n然而如上所述,在通过轮询捕捉热插拔事件时,如果缩短轮询的时间间隔, 则系统的负担就会增大。但如果相反将轮询间隔延长,在热插拔事件发生之后 到执行处理之前会发生时间延迟。\n这个问题通过采用高速CPU可在一定程度上避免或减轻,但这时需要的CPU 价格十分高昂。此外,当AV设备等的系统控制电路是由微型计算机构成时, 整体中的CPU价格也很重要,如果价格昂贵,即便速度快也无法采用。\n发明内容\n本发明的目的在于提供一种可解决上述那样的以往技术中存在问题的设 备管理方法及管理系统。本发明的另一目的在于提供一种在非事件驱动方式的 OS(Operating System,操作系统)中、可以实现对设备(外围设备)的热插拔功 能的新型设备管理方法及管理系统。\n本发明的第一方面提供了一种设备管理方法,其特征在于,在出现设备安 装或拆卸时,通过内核的核心驱动程序调用热插拔脚本,在调用该热插拔脚本 之后,执行该热插拔脚本本身描述的特定处理,然后调用挂钩程序,该挂钩程 序在被调用后,运行热插拔管理程序,获取所述设备安装或拆卸的相关信息, 所述热插拔管理程序中,热插拔端口监督程序利用所述挂钩程序运行,接受所 述热插拔脚本环境变量中包含的信息,热插拔库从所述热插拔端口监督程序获 程序获取所述信息,并将API提供给用户应用程序。\n本发明中,当发生安装或者拆卸设备时,是通过内核的核心驱动程序调用 热插拔脚本。当内核的核心驱动程序调用热插拔脚本后,将先执行该热插拔脚 本本身记录的特定处理,然后调用挂钩程序。\n此挂钩程序在被调用后,将运行热插拔管理程序,取得上述设备安装和拆 卸的相关信息。\n本发明在产生热插拔事件时,将从热插拔脚本通过挂钩程序运行热插拔管 理程序,将此热插拔事件相关信息提供给用户应用程序。\n本发明的其他目的以及本发明可获得的具体优点,在以下参照附图说明实 施方式后将更加清楚。\n附图说明\n图1是表示以往的设备管理方法及管理系统的方框图。\n图2是表示本发明所述的设备管理方法及管理系统的方框图。\n具体实施方式\n以下参照附图,说明本发明所述设备管理方法及管理系统。\n如图1所示,在目前使用的Linux(注册商标)中,当将USB(Universal Serial Bus)设备热插拔连接时,无论连接的是什么设备,一旦USB大容量存 储设备连接到个人电脑上,则如图1中a所示,是通过延长内核空间KERNEL 中准备的核心驱动程序usbcore中探查函数probe的处理,调用热插拔脚本 hotplug。\n本发明着眼于这一点,利用热插拔脚本hotplug实现热插拔处理。以下, 参照图2说明在装入Kernel2.4Linux(注册商标)的个人电脑上、将大容量存储 设备USB连接时的热插拔处理。\n本发明与上述图1中所示的系统一样,在Linux(注册商标)的内核空间 KERNEL中,备有USB核心驱动程序usbcore以及用于USB大容量存储的类驱动 程序usb-storage,在用户空间USER中备有热插拔脚本hotplug以及USB脚本 usb.agent。\n此外,在用户空间USER中,不仅设有挂钩程序hooker,并且设有构成热 插拔管理程序pnpmanager的热插拔端口监督程序pnpmgr以及热插拔库 libpnpmgr。\n此时由于挂钩程序hooker是由热插拔脚本hotplug执行,因此在热插拔 脚本hotplug的最后,追加用于调用挂钩程序hooker的代码。此外,挂钩程 序hooker使用热插拔管理程序pnpmanager的信息队列,将环境变量传递给该 热插拔管理程序pnpmanager。\n进而,热插拔端口监督程序pnpmgr依据来自程序hooker的信息,收集设 备信息,并依据需要,将事件通知给热插拔库libpnpmgr。热插拔库libpnpmgr 将API(Application Program Interface,应用程序接口)提供给用户应用程序。\nAPI提供的功能中包含登记或解除事件等待的功能。此功能用于登记或解 除使用热插拔端口监督程序pnpmgr功能。进行登记后,便可以获取事件发生 的通知以及设备信息。\n作为API提供的功能,还具有获取设备信息的功能。这项功能用于获取当 前与个人电脑连接的设备信息。这里取得提供的信息中,包含用户应用程序访 问该设备所需的所有信息。\nAPI还具有进行事件通知的功能。这项功能用于在登记时向预先指定的回 调函数callback通知热插拔设备的安装拆卸信息以及设备种类。\n然后,在挂钩程序hooker与热插拔端口监督程序pnpmgr之间、以及热插 拔端口监督程序pnpmgr与热插拔库libpnpmgr之间,通过信息交换实现进程 间的通讯。\n如果采用这种结构,当USB大容量存储设备连接于个人电脑时,将执行图 1中说明的相同处理。\n即,当USB大容量设备连接于个人电脑时,如图2中的a所示,通过延长 内核空间KERNEL中预备的核心驱动程序usbcore中挂钩函数probe的处理, 可以调用热插拔脚本hotplug。此时,设定各种环境变量,执行热插拔脚本 hotplug。\n然后如图2中b所示,热插拔脚本hotplug运行触发其执行的事件所对应 的脚本。此时,按照图1中a所设定的环境变量执行USB脚本usb.agent。\n接着,USB脚本usb.agent装入触发其执行的事件所对应的类驱动程序, 这里如图2中c所示,装入USB大容量存储设备的类驱动程序usb-storage。 然后如图2中d所示,USB核心驱动程序usbcore执行更新虚拟文件 /proc/bus/usb/devices的内容等一系列处理。\n因此,用户应用程序只要通过轮询,监视虚拟文件 /proc/bus/usb/devices,便可以在将大容量存储设备进行USB连接时,使用 该大容量存储设备。然而,现行的Linux(注册商标)的热插拔处理只能在该类 驱动程序动态嵌入时使用。\n采用本发明所述的系统,在运行上述处理之后,如图2中e所示,热插拔 脚本hotplug将调用挂钩程序hooker。接着,如图2中f所示,挂钩程序hooker 将热插拔脚本hotplug的环境变量通过信息方式传送给热插拔端口监督程序 pnpmgr。\n然后,热插拔端口监督程序pnpmgr如图2中g所示,依据来自挂钩程序 hooker的信息,收集USB连接设备的相关信息。\n这里,如图2中h所示,只要有用户应用程序在监视,热插拔端口监督程 序pnpmgr就会将信息发送给热插拔库libpnpmgr。\n热插拔库libpnpmgr从用户应用程序接受请求后,如图2中i所示,将向 热插拔端口监督程序pnpmgr发送该请求。\n本发明中,上述a~i的处理是依次实施。\n因此,当大容量存储设备进行USB连接时,便可使用该大存储设备。而一 旦停止大存储设备的USB连接,通过同样的处理,可禁止该大容量存储设备的 使用。\n如此,通过使用图2所示的本发明所述系统,在Linux(注册商标)中便可 实现热插拔。此时,从用户应用程序看,热插拔设备的追加及删除可不同步进 行,并且不需要进行轮询。因此,从热插拔设备连接之后到执行相应的处理之 间不会产生时间的延迟,不仅可减轻CPU的负担,并且可以控制成本的上升。\n并且,由于热插拔管理程序pnpmanager被分割成热插拔端口监督程序 pnpmgr和热插拔库libpnpmgr,因此它们之间的进程间通讯可隐蔽到用户应用 程序之外。因此,用户应用程序在处理热插拔事件时与访问通常库时的处理方 法相同。\n此外,用户应用程序可通过将回调函数call back登记在热插拔端口监督 程序pnpmgr,以不同步的方式接收事件信息,或者仅接收所关心的设备的事件 信息。并且当内核空间KERNEL以及用户空间USER发生变更时,只需要在热插 拔脚本hotplug最后添加一行用于调用挂钩程序hooker的代码即可,对系统 没有影响。\n在以上说明中,是针对将本发明适用于USB设备的热插拔事件的情况,但 并非仅限于此,也可以适用于IEEE(Institute of Electrical and Electronics Engineers,电气及电子工程师学会)1394、网络适配器、PCMCIA(Personal Computer Memory Card International Association,PC机内存卡国际联合会) 卡等热插拔事件。\n本发明并非仅限于参照附图说明的上述实施例,作为业内人士可知,于不 脱离所附的权利要求范围及其主旨范围内,可进行各种变更、置换或同等操作。\n工业上的实用性\n如上所述,使用本发明,可在例如Linux(注册商标)等非事件驱动方式的 OS中实现热插拔。此外,从热插拔发生之后到运行相应处理之间不会产生时间 延迟,并可减轻系统负担。而且也不需要使用高速CPU,因此可控制系统成本 的上升。
法律信息
- 2011-04-20
未缴年费专利权终止
IPC(主分类): G06F 13/10
专利号: ZL 200480006000.7
申请日: 2004.02.10
授权公告日: 2008.04.16
- 2008-04-16
- 2006-05-31
- 2006-04-05
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| | 暂无 |
2000-06-21
| | |
2
| |
2000-03-15
|
1998-09-10
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 1 | | 2009-12-09 | 2009-12-09 | | |
2 | | 2010-11-12 | 2010-11-12 | | |