本发明专利技术公开了一种实现输入设备热插拔的系统及方法,包括分别属于Linux操作系统的内核空间的驱动模块、输入核心模块和输入设备处理模块;当输入设备热插或热拔时,所述驱动模块将输入设备的热插拔类型传递给输入核心模块;所述输入核心模块调用Linux操作系统的系统函数匹配到对应的输入设备处理模块,匹配成功后根据输入设备的热插拔类型在Linux操作系统的内核空间中直接截取输入设备的热插拔事件;所述输入核心模块将输入设备的热插拔事件发送给输入设备处理模块,输入设备处理模块根据输入设备的热插拔事件,进行关于输入设备的处理。本发明专利技术可在Linux操作系统的内核空间中直接实现输入设备的热插拔技术,可以提高Linux操作系统的处理效率。
【技术实现步骤摘要】
本专利技术涉及基于Linux操作系统的。
技术介绍
目前,Linux操作系统作为一个开放源代码的操作系统,已经广泛应用在服务器、嵌入式等领域。Linux操作系统分为内核空间和用户空间的,在内核空间里面主要包括驱动模块、操作系统的核心模块以及处理模块,行业里把内核空间内的所有模块统称为Linux内核空间,而用户空间一般包含用户程序,用户程序不能无限制的使用内核空间的功能,用户程序必须按照内核空间提供的既有功能、既有方法来使用。传统的Linux操作系统中,有两种不同的方法来看待热插拔。Linux操作系统的内核空间看待热插拔为硬件,是内核空间和硬件之间的交互。而用户看待热插拔是内核空间和用户空间中的用户程序的交互,用户程序通过内核空间发给用户空间的通知来得知设备的热插拔。目前,Linux操作系统关于设备热插拔的实现随着版本的升级不断再变化。Linux操作系统的热插拔的原有实现,依赖于Linux操作系统的设备模型。在Linux操作系统现有的设备模型下,当输入设备热插拔时,在设备模型子系统下,将产生事件以通知用户空间,即内核空间通知用户空间发生了某种热插拔事件时,内核空间调用用户空间的处理程序。当用户向Linux操作系统添加或删除输入设备时,内核空间会产生一个热插拔事件,并在/proc/sys/kernel/hotplug (Linux操作系统下的一个文件)里查找处理输入设备连接的用户空间内的用户程序。这个用户空间内的用户程序主要有:Hotplug用户程序:这个程序是一个典型的bash脚本,只传递执行权给一系列位于/etc/hot-plug.d/目录树的程序。hotplug脚本搜索所有的具有.hotplug后缀的可能对这个事件进行处理的程序并调用它们,并传递给它们许多不同的已经被内核空间设置的环境变量,目前这个用户程序基本被淘汰;Udev用户程序:用于linux2.6.13或更高版本的内核空间上,为用户空间提供使用固定设备名的动态/dev目录的解决方案。它通过在sysfs的/class/和/block/目录树中查找一个称为dev的文件,以确定所创建的设备节点文件的主次设备号,所以要使用udev,驱动模块必须为输入设备在sysfs中创建类接口及其dev属性文件,方法和sculld模块中创建dev属性相同。上述采用hotplug、udev用户程序,必须结合内核空间和用户空间才能实现实现输入设备热插拔,由此可知,目前还没有一种可以在Linux操作系统的内核空间中直接。
技术实现思路
本专利技术的目的在于提供一种可以在Linux操作系统的内核空间中直接,通过在Linux操作系统的内核空间中直接获取输入设备热插拔事件,结合在Linux操作系统的内核空间的图形库直接渲染技术来实现设备的热插拔。为了达到上述的目的,本专利技术采用如下技术方案: 一种实现输入设备热插拔的系统,基于Linux操作系统,包括分别属于Linux操作系统的内核空间的驱动模块、输入核心模块和输入设备处理模块;当输入设备热插或热拔时,驱动模块将输入设备的热插拔类型传递给输入核心模块;输入核心模块调用Linux操作系统的系统函数匹配对应的输入设备处理模块,匹配成功后在Linux操作系统的内核空间中直接截取输入设备的热插拔事件,并将输入设备的热插拔事件发送给输入设备处理模块;所述输入设备处理模块根据所述输入设备的热插拔事件,进行有关所述输入设备的处理。可选的,在上述的实现输入设备热插拔的系统中,所述驱动模块或者所述输入设备处理模块包括连接函数模块与断开函数模块,所述连接函数模块用于将输入设备加入到Linux操作系统的输入设备列表中并截取所述输入设备的热插事件,所述断开函数模块用于将输入设备从Linux操作系统的输入设备列表中删除并截取输入设备的热拔事件,所述输入核心模块在匹配成功后,根据输入设备的热插拔类型调用所述连接函数模块或所述断开函数模块实现对所述输入设备的热插拔事件的截取。可选的,在上述的实现输入设备热插拔的系统中,所述输入设备是鼠标、键盘、触摸屏中的一种或多种。本专利技术还公开了一种实现输入设备热插拔的方法,包括如下步骤:步骤S1:当输入设备热插或热拔时,驱动模块将输入设备的热插拔类型传递给输入核心模块;步骤S2:输入核心模块调用Linux操作系统的系统函数匹配到对应的输入设备处理模块,匹配成功后根据输入设备的热插拔类型在Linux操作系统的内核空间中直接截取输入设备的热插拔事件;步骤S3:输入核心模块将输入设备的热插拔事件发送给输入设备处理模块,输入设备处理模块根据输入设备的热插拔事件,进行关于输入设备的处理。优选的,在上述的实现输入设备热插拔的方法中,所述驱动模块或者所述输入设备处理模块包括连接函数模块和断开函数模块,所述连接函数模块用于将输入设备加入到Linux操作系统的输入设备列表中并截取所述输入设备的热插事件,所述断开函数模块用于将输入设备从Linux操作系统的输入设备列表中删除并截取输入设备的热拔事件。优选的,在上述的实现输入设备热插拔的方法中,当输入设备热插时,所述步骤S2具体包括如下子步骤:输入核心模块遍历驱动模块和输入设备处理模块,并为所述输入设备挂载对应的输入设备处理模块;输入核心模块挂载成功后调用所述连接函数模块;输入核心模块截取输入设备的热插事件。所述步骤S3具体包括如下子步骤:输入核心模块将输入设备的热插事件发送给输入设备处理模块;输入设备处理模块建立所述输入设备相关的数据结构,允许所述输入设备的输入事件。优选的,在上述的实现输入设备热插拔的方法中,当输入设备热拔时,所述步骤S2具体包括如下子步骤:输入核心模块遍历驱动模块和输入设备处理模块,为所述输入设备卸载对应的输入设备处理模块;输入核心模块卸载成功后调用所述断开函数模块;输入核心模块截取输入设备的热拔事件。所述步骤S3具体包括如下子步骤:输入核心模块将输入设备的热拔事件发送给输入设备处理模块;输入设备处理模块删除所述输入设备相关的数据结构,禁止所述输入设备的输入事件。本专利技术提供的,包括分别属于Linux操作系统的内核空间的驱动模块、输入核心模块及输入设备处理模块;当输入设备热插或热拔时,驱动模块将输入设备的热插拔类型传递给输入核心模块;输入核心模块调用Linux操作系统的系统函数匹配对应的输入设备处理模块,匹配成功后在Linux操作系统的内核空间中直接截取输入设备的热插拔事件,并将输入设备的热插拔事件发送给输入设备处理模块;所述输入设备处理模块根据所述输入设备的热插拔事件,进行有关所述输入设备的处理。由于所述驱动模块、输入核心模块及输入设备处理模块属于Linux操作系统的内核空间,因此,本专利技术可在Linux操作系统的内核空间中直接实现输入设备的热插拔技术,可以提高Linux操作系统的处理效率。附图说明本专利技术的由以下的实施例及附图给出。图1是本专利技术的实现输入设备热插拔的系统的结构示意图;图2是本专利技术的实现输入设备热插拔的方法的总体流程图;图3是本专利技术的实现输入设备热插拔的方法热插时的详细流程图;图4是本专利技术的实现输入设备热插拔的方法热拔时的详细流程图;图中,10-输入设备、20-内核空间、21-驱动模块、22-输入核心模块、23-输入设备处理模块。具体实施例方式以下将对本专利技术本文档来自技高网...
【技术保护点】
一种实现输入设备热插拔的系统,基于Linux操作系统,其特征在于,包括分别属于Linux操作系统的内核空间的驱动模块、输入核心模块和输入设备处理模块;当输入设备热插或热拔时,驱动模块将输入设备的热插拔类型传递给输入核心模块;所述输入核心模块调用Linux操作系统的系统函数匹配对应的输入设备处理模块,匹配成功后在Linux操作系统的内核空间中直接截取输入设备的热插拔事件,并将输入设备的热插拔事件发送给输入设备处理模块;所述输入设备处理模块根据所述输入设备的热插拔事件,进行有关所述输入设备的处理。
【技术特征摘要】
【专利技术属性】
技术研发人员:梁金祥,
申请(专利权)人:盛乐信息技术上海有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。