CN109960534A - 设备探测方法、装置、存储介质以及电子设备 - Google Patents
设备探测方法、装置、存储介质以及电子设备 Download PDFInfo
- Publication number
- CN109960534A CN109960534A CN201711347307.9A CN201711347307A CN109960534A CN 109960534 A CN109960534 A CN 109960534A CN 201711347307 A CN201711347307 A CN 201711347307A CN 109960534 A CN109960534 A CN 109960534A
- Authority
- CN
- China
- Prior art keywords
- peripheral device
- information
- subdirectory
- device information
- peripheral
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种设备探测方法、装置、存储介质以及电子设备,该方法包括:在用户态下遍历文件系统的根目录,所述根目录下包括多个子目录;获取每个子目录下所包括的文件组成的特征信息;基于每个子目录的特征信息,获得外围设备信息;将所述外围设备信息保存为探测结果。运用该方法,可以在不修改Linux系统内核代码的基础上对外围设备进行探测,保证了系统的稳定性,且可移植性强。
Description
技术领域
本发明涉及通信设备领域,具体而言,涉及一种设备探测方法、装置、存储介质以及电子设备。
背景技术
Linux系统包括内核态以及用户态。为了避免驱动问题导致系统死机,同时为了提升系统稳定性,提升驱动的可调试能力、保护驱动源码以及避免内核态到用户态的数据拷贝导致性能损失,相关的驱动大多都写在用户态内。
在Linux系统中,当外围设备(PCI:Peripheral Component Interconnect)变动(如前面增加PCI设备或设备损坏导致PCI设备减少)时,PCI设备的基地址由于动态分配可能会发生变化,将会导致驱动无法加载。为保证用户态外围设备驱动在外围设备变动后仍能对外围设备进行正常加载工作,驱动在加载前必须进行外围设备探测。
但是,传统的探测方法,均需要对内核代码进行修改,这样就会导致在对外围设备探测的同时降低了系统稳定性。
发明内容
有鉴于此,本发明实施例的目的在于提供一种设备探测方法、装置、存储介质以及电子设备,以缓解上述问题。
第一方面,本发明实施例提供了一种设备探测方法,所述方法包括:在用户态下遍历文件系统的根目录,所述根目录下包括多个子目录;获取每个子目录下所包括的文件组成的特征信息;基于每个子目录的特征信息,获得外围设备信息;将所述外围设备信息保存为探测结果。该方法是在用户态下去遍历系统文件的根目录,也是在用户态下去获取的外围设备信息,即整个过程都在用户态进行,不再需要修改内核代码即可对外围设备进行探测,从而保证了系统的稳定性。
在本发明第一方面的第一种实施方式中,在所述外围设备信息为多个外围设备信息时,所述将所述外围设备信息保存为探测结果,包括:将所述多个外围设备信息进行排序,将排序后的多个外围设备信息保存为探测结果。通过该方法,可以对得到的多个外围设备信息进行区分,使得用户态驱动可以根据排序打开对应外围设备目录下的的文件进行映射,得到对应外围设备的基地址,进行驱动加载与设备配置,防止保存的探测结果按照默认的字典顺序未与实际设备一一对应。
在本发明第一方面的第二种实施方式中,所述将所述多个外围设备信息进行排序,包括:获得每个外围设备信息的取值,得到多个取值;将所述多个取值按照从小到大的顺序进行排序或按照从大到小的顺序进行排序。通过该方法,可以对得到的多个外围设备信息进行区分,使得用户态驱动可以根据排序打开对应外围设备目录下的文件进行映射,得到对应外围设备的基地址,进行驱动加载与设备配置,防止保存的探测结果按照默认的字典顺序未与实际设备一一对应。
在本发明第一方面的第三种实施方式中,每个外围设备信息包括总线编号、设备编号以及功能编号,所述获得每个外围设备信息的取值,包括:基于每个外围设备信息所包括的总线编号、设备编号以及功能编号,获得每个外围设备信息的取值。由于每个外围设备信息所包括的总线编号、设备编号以及功能编号中,至少有一个不同,所以基于每个外围设备信息所包括的总线编号、设备编号以及功能编号而获取到的取值也不同,通过不同的取值能够将不同的外围设备区别开。
在本发明第一方面的第四种实施方式中,每个子目录的特征信息包括:厂家标识、产品标识以及设备类别码,所述基于每个子目录的特征信息,获得外围设备信息,包括:将每个子目录的厂家标识、产品标识以及设备类别码与预先获取到的目标外围设备的厂家标识、产品标识以及设备类别码进行匹配;对匹配成功的子目录的目录名进行解析,得到与所述匹配成功的子目录对应的外围设备信息,其中,每个外围设备信息包括:域、总线编号、设别编号以及功能编号。在进行设备探测前,可以预先确定一种待探测的目标外围设备的特征信息,在确定了待探测的目标外围设备的特征信息后,通过将每个子目录的厂家标识、产品标识以及设备类别码与目标外围设备的特征信息所包括的厂家标识、产品标识以及设备类别码进行匹配,从而得到外围设备信息。因此,当需要更换待探测的目标外围设备时(例如本次是对网卡进行探测,下一次希望对声卡进行探测),只需要简单地修改用户态中的待探测的目标外围设备的特征信息即可完成更换,移植性较强。
第二方面,本发明实施例提供了一种设备探测装置,所述装置包括:遍历目录模块、获取模块以及保存模块。遍历目录模块,用于在用户态下遍历文件系统的根目录,所述根目录下包括多个子目录;获取模块,用于获取每个子目录下所包括的文件组成的特征信息;所述获取模块,还用于基于每个子目录的特征信息,获得外围设备信息;保存模块,用于将所述外围设备信息保存为探测结果。该装置是在用户态下去遍历系统文件的根目录,也是在用户态下去获取的外围设备信息,即整个过程都在用户态进行,不再需要修改内核代码即可对外围设备进行探测,从而保证了系统的稳定性。
在本发明第二方面的第一种实施方式中,在所述外围设备信息为多个外围设备信息时,所述保存模块,用于将所述多个外围设备信息进行排序,将排序后的多个外围设备信息保存为探测结果。通过该装置,可以对得到的多个外围设备信息进行区分,使得用户态驱动可以根据排序打开对应外围设备目录下的文件进行映射,得到对应外围设备的基地址,进行驱动加载与设备配置,防止保存的探测结果按照默认的字典顺序未与实际设备一一对应。
在本发明第二方面的第二种实施方式中,所述保存模块,包括:获取子模块,用于获得各外围设备信息的取值;排序子模块,用于将每个外围设备信息的取值按照从小到大的顺序进行排序或按照从大到小的顺序进行排序。通过该装置,可以对得到的多个外围设备信息进行区分,使得用户态驱动可以根据排序打开对应外围设备目录下的文件进行映射,得到对应外围设备的基地址,进行驱动加载与设备配置,防止保存的探测结果按照默认的字典顺序未与实际设备一一对应。
在本发明第二方面的第三种实施方式中,每个外围设备信息包括总线编号、设备编号以及功能编号,所述获取子模块,用于将每个外围设备信息所包括的总线编号、设备编号以及功能编号相加,获得每个外围设备信息的取值。由于每个外围设备信息所包括的总线编号、设备编号以及功能编号中,至少有一个不同,所以基于每个外围设备信息所包括的总线编号、设备编号以及功能编号而获取到的取值也不同,通过不同的取值能够将不同的外围设备区别开。
在本发明第二方面的第四种实施方式中,每个子目录的特征信息包括:厂家标识、产品标识以及设备类别码,所述获取模块,包括:匹配子模块,用于将每个子目录的厂家标识、产品标识以及设备类别码与预先获取到的目标外围设备的厂家标识、产品标识以及设备类别码进行匹配;解析子模块,用于对匹配成功的子目录的目录名进行解析,得到与所述匹配成功的子目录对应的外围设备信息,其中,每个外围设备信息包括:域、总线编号、设别编号以及功能编号。在进行设备探测前,可以预先确定一种待探测的目标外围设备的特征信息,在确定了待探测的目标外围设备的特征信息后,通过将每个子目录的厂家标识、产品标识以及设备类别码与目标外围设备的特征信息所包括的厂家标识、产品标识以及设备类别码进行匹配,从而得到外围设备信息。因此,当需要更换待探测的目标外围设备时(例如本次是对网卡进行探测,下一次希望对声卡进行探测),只需要简单地修改用户态中的待探测的目标外围设备的特征信息即可完成更换,移植性较强。
第三方面,本发明实施例提供一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器读取并运行时执行上述第一方面任一实施方式所述的方法。
第四方面,本发明实施例提供一种电子设备,包括可读存储介质和处理器,所述可读存储介质上存储有计算机程序,所述计算机程序被所述处理器读取并运行时执行上述第一方面任一实施方式所述的方法。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明第一实施例提供的设备探测方法的流程图;
图2为本发明第一实施例提供的设备探测方法的一种实施方式的流程图;
图3为本发明第二实施例提供的设备探测置的结构框图;
图4为本发明第二实施例提供的设备探测装置的一种实施方式的结构框图。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
首先对本发明所涉及到的术语进行简要介绍:
PCI:Peripheral Component Interconnect(外围器件互联),PCI设备可以是声卡、网卡、显卡等。
mmap:是Linux提供的一种内存映射文件的函数。
ioctl:是Linux提供的一种用户态程序中对设备进行管理的函数。
VendorID:硬件的厂家标识。
DeviceID:硬件的产品标识。
在本申请发明人提出本申请实施例中的技术方案之前,在Linux系统中,当PCI设备变动(如前面增加PCI设备或PCI设备损坏导致PCI设备减少)时,PCI设备的基地址由于动态分配可能会发生变化,若发生变,将会导致安装在用户态的驱动无法加载。为保证用户态PCI设备驱动在PCI设备变动后仍能对PCI设备进行正常加载工作,驱动在加载前必须进行PCI设备的探测,以获取PCI设备的寄存器基地址,从而通过mmap函数将PCI设备的寄存器区域映射到用户态进行操作。
现有的对用户态的PCI设备进行探测的方法中,方案一是将内核探测到的所有PCI设备的设备信息以文件的形式写入内核内进行保存,当用户态驱动加载时,需要打开保存在内核的文件并进行解析;方案二是在Linux内核初始化阶段,PCI总线注册各个驱动并扫描所有挂载在PCI总线上的设备,通过PCI设备的类别码识别出PCI设备,并将PCI设备信息保存在内核,用户态再通过ioctl获取PCI设备信息。
针对上述两种方案,发明人在实现本申请实施例的技术方案的过程中发现,方案一由于把文件写入内核的过程需要修改内核代码,因此,实现过程较为复杂,信息传递效率低,可靠性也较差。方案二也把信息写入内核,需要修改较多内核代码,还需要增加ioctl命令字,ioctl命令一般还需要建立相应的字符设备节点,实现很复杂,可移植性差。
上述现有技术方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本发明实施例针对上述问题所提出的解决方案,都应该是发明人在本发明过程中对本发明做出的贡献。
第一实施例
请参照图1,图1是本发明第一实施例提供的一种设备探测方法的流程图,所述方法应用于Linux系统。下面将对图1所示的流程进行详细阐述,所述方法包括:
步骤S110:在用户态下遍历文件系统的根目录,所述根目录下包括多个子目录。
Linux系统的文件系统中包含大量的文件目录。
当PCI设备接入Linux系统后,PCI设备可以挂载在PCI总线上,从而形成与该PCI设备对应的文件目录保存在文件系统内。文件系统保存了文件目录后,Linux系统可以直接在用户态下访问该文件目录。
进一步的,Linux系统可以在获取到shell命令后,在用户态下访问文件系统中的PCI根目录,并通过while函数的循环控制变量对PCI根目录进行遍历。其中,遍历路径是:/sys/bus/pci/devices。该PCI根目录下可以包括多个子目录,子目录的数量由接入Linux系统的PCI设备数目决定。
步骤S120:获取每个子目录下所包括的文件组成的特征信息。
PCI根目录下的每个子目录,都可以包括与该子目录所对应的PCI设备的Vendor文件(厂家标识文件)、Class文件(设备类别码文件)和Device文件(产品标识文件),其中,Vendor文件包括VendorID、Class文件包括ClassID、Device文件包括DeviceID。针对每一个子目录,可以将该子目录对应的Vendor ID(厂家标识)、ClassID(设备类别码)以及DeviceID(产品标识)组成与该PCI设备对应的特征信息进行保存。其中,当PCI设备为网卡时,其设备类别码固定为0200。
步骤S130:基于每个子目录的特征信息,获得外围设备信息。
于本实施例中,在进行设备探测前,可以预先确定一种待探测的目标PCI设备的特征信息,例如待探测的目标PCI设备可以是网卡、可以是声卡,还可以是显卡等。
在确定了待探测的目标PCI设备的特征信息后,针对步骤S120中获取到的每一个子目录的特征信息,可以将特征信息与待探测的目标外围设备的特征信息进行匹配。
进一步的,可以把每一个子目录的厂家标识、产品标识以及设备类别码与待探测的目标外围设备的厂家标识、产品标识以及设备类别码进行匹配。若匹配不成功,说明与该子目录对应的PCI设备不属于目标外围设备,需要切换到下一个子目录进行匹配;若匹配成功,则说明与该子目录对应的PCI设备属于目标外围设备。
当然,同一个Linux系统上可以同时连接一个或者多个同类型的PCI设备。例如,可以在一个Linux系统上同时挂载多个完全一样的网卡,这些网卡在连接Linux系统之前完全一样,在连接Linux系统之后,被分配的寄存器基地址不同,也会形成与网卡数量对应的多个子目录保存在PCI根目录内。
进一步的,针对匹配成功的子目录,可以对其中的每一个子目录的目录名进行解析,得到与该子目录对应的外围设备信息。其中,每个外围设备信息包括:域、总线编号、设别编号以及功能编号。
下面以一个匹配成功的网卡的子目录为例进行举例说明:
得到的子目录名为:
[root@nsr2900x/sys/bus/pci/devices]#cat 0000:0f:00.1/vendor
0x8086
[root@nsr2900x/sys/bus/pci/devices]#cat 0000:0f:00.1/class
0x020000
[root@nsr2900x/sys/bus/pci/devices]#cat 0000:0f:00.1/device
0x151f
对该子目录名进行解析,得到的结果即为该网卡的外围设备信息。即域为0000,总线编号为0f,设备编号为00,功能编号为1。
步骤S140:将所述外围设备信息保存为探测结果。
当对PCI根目录遍历完后,可以得到每一个目标外围设备的外围设备信息。
其中,作为一种实施方式,可以直接把与该子目录对应的外围设备信息保存为探测结果。当探测结果中外围设备信息为0个时即探测失败,未找到目标PCI设备;当外围设备信息大与等于1个时即探测成功,找到目标PCI设备。
若匹配成功的子目录为多个,即得到的PCI设备信息有多个,若没有对PCI设备信息进行区分,当将PCI设备信息保存为探测结果时,扫描的顺序一般是按照字典顺序,可能会导致PCI设备信息未与实际设备一一对应。
为了避免上述问题,作为另一种实施方式,在得到PCI设备信息后,可以对得到的PCI设备信息进行排序,并将排序后的PCI设备信息保存为探测结果。此种方式在探测到一个或多个目标PCI设备后得到的PCI设备信息都可按实际设备顺序正确对应。
进一步的,请参看图2,当得到PCI设备信息并进行排序时,步骤S140可以变为步骤S141:对上述外围设备信息排序后保存为最终探测结果。
其中排序方式如下:对每个外围设备信息获取取值,以取值作为键值按照从小到大或从大到小的顺序进行排序。
作为一种实施方式,可以基于每个PCI设备信息所包括的总线编号、设备编号以及功能编号,获得每个外围设备信息的取值。
由于每个外围设备信息所包括的总线编号、设备编号以及功能编号中,至少有一个不同,所以基于每个外围设备信息所包括的总线编号、设备编号以及功能编号而获取到的取值也不同,通过不同的取值能够将不同的外围设备区别开。
进一步的,可以将每个PCI设备信息的总线编号、设备编号和功能编号各取一个字节,然后将得到的三个字节进行拼接,得到一个整型值,并将该整型值确定为外围设备信息的取值。
下面以上述网卡的PCI设备信息为例进行介绍:上述网卡的总线编号为0f,设备编号为00,功能编号为1。可以将0f左移4位,00左移8位,1左移16位,将移动后的三个字节相加后得到的数值确定为该网卡的取值。
在得到PCI设备的探测结果后,用户态驱动可以根据探测结果打开对应PCI设备目录下的resource0等文件进行mmap映射,得到该PCI设备的基地址,进行驱动加载与设备配置,而不再需要去修改内核的代码,保证了系统的稳定性,实现简单,高效稳定。
此外,当需要更换待探测的目标PCI设备时(例如本次是对网卡进行探测,下一次希望对声卡进行探测),只需要简单地修改用户态中的待探测的目标PCI设备的特征信息即可完成更换,移植性较强。
本发明第一实施例所提供的一种设备探测方法,通过在用户态下遍历文件系统的根目录,从而获取每个子目录下所包括的文件组成的特征信息;然后基于每个子目录的特征信息,获得外围设备信息,并将所述外围设备信息保存为探测结果。在得到PCI设备的探测结果后,用户态驱动可以根据探测结果打开对应PCI设备目录下的resource0等文件进行mmap映射,得到该外围设备的基地址,进行驱动加载与设备配置。由于该设备探测过程完全在用户态实现,不再需要对内核代码进行修改,因此保证了系统的稳定性,同时,实现起来较为简单,高效稳定,可移植性强。
第二实施例
请参照图3,图3是本发明第二实施例提供的一种设备探测装置400的结构框图。下面将对图3所示的结构框图进行阐述,所示装置包括:遍历目录模块410、获取模块420以及保存模块430。
遍历目录模块410,用于在用户态下遍历文件系统的根目录,所述根目录下包括多个子目录。
获取模块420,用于获取每个子目录下所包括的文件组成的特征信息。
所述获取模块420,还用于基于每个子目录的特征信息,获得外围设备信息。
每个子目录的特征信息包括:厂家标识、产品标识以及设备类别码,所述获取模块420,包括:
匹配子模块421,用于将每个子目录的厂家标识、产品标识以及设备类别码与预先获取到的目标外围设备的厂家标识、产品标识以及设备类别码进行匹配;
解析子模块422,用于对匹配成功的子目录的目录名进行解析,得到与所述匹配成功的子目录对应的外围设备信息,其中,每个外围设备信息包括:域、总线编号、设别编号以及功能编号。
每个外围设备信息包括总线编号、设备编号以及功能编号,所述获取子模块420,用于将每个外围设备信息所包括的总线编号、设备编号以及功能编号相加,获得每个外围设备信息的取值。
保存模块430,用于将所述外围设备信息保存为探测结果。
在所述外围设备信息为多个外围设备信息时,所述保存模块430,用于将所述多个外围设备信息进行排序,将排序后的多个外围设备信息保存为探测结果。
作为一种实施方式,请参看图4,所述保存模块430,包括:
获取子模块431,用于获得各外围设备信息的取值;
排序子模块432,用于将每个外围设备信息的取值按照从小到大的顺序进行排序或按照从大到小的顺序进行排序。
本实施例对设备探测装置400的各功能模块实现各自功能的过程,请参见上述图1至图2所示实施例中描述的内容,此处不再赘述。
此外,对应于第一实施例中的设备探测方法,本申请实施例还提供了一种可读存储介质,所述可读存储介质内存储有计算机程序,所述计算机程序被处理器读取并运行时,使得处理器执行第一实施例中任一实施方式所述的方法。
此外,对应于第一实施例中的设备探测方法,本申请实施例还提供了一种电子设备,包括可读存储介质和处理器,所述可读存储介质上存储有计算机程序,所述计算机程序被所述处理器读取并运行时使得电子设备执行第一实施例中任一实施方式所述的方法。
综上所述,本发明实施例提出的设备探测方法、装置、存储介质以及电子设备,通过在用户态下遍历文件系统的根目录,从而获取每个子目录下所包括的文件组成的特征信息;然后基于每个子目录的特征信息,获得外围设备信息,并将所述外围设备信息保存为探测结果。在得到PCI设备的探测结果后,用户态驱动可以根据探测结果打开对应PCI设备目录下的resource0等文件进行mmap映射,得到该外围设备的基地址,进行驱动加载与设备配置。由于该设备探测过程完全在用户态实现,不再需要对内核代码进行修改,因此保证了系统的稳定性,同时,实现起来较为简单,高效稳定,可移植性强。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。该存储介质上的计算机程序被运行时,能够执行上述设备探测方法,从而可以在不修改内核代码的基础上对设备进行探测,保证了系统的稳定性,且可移植性强。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (12)
1.一种设备探测方法,其特征在于,所述方法包括:
在用户态下遍历文件系统的根目录,所述根目录下包括多个子目录;
获取每个子目录下所包括的文件组成的特征信息;
基于每个子目录的特征信息,获得外围设备信息;
将所述外围设备信息保存为探测结果。
2.根据权利要求1所述的方法,其特征在于,在所述外围设备信息为多个外围设备信息时,将所述外围设备信息保存为探测结果,包括:
将所述多个外围设备信息进行排序,将排序后的多个外围设备信息保存为探测结果。
3.根据权利要求2所述的方法,其特征在于,所述将所述多个外围设备信息进行排序,包括:
获得每个外围设备信息的取值,得到多个取值;
将所述多个取值按照从小到大的顺序进行排序或按照从大到小的顺序进行排序。
4.根据权利要求3所述的方法,其特征在于,每个外围设备信息包括总线编号、设备编号以及功能编号,所述获得每个外围设备信息的取值,包括:
基于每个外围设备信息所包括的总线编号、设备编号以及功能编号,获得每个外围设备信息的取值。
5.根据权利要求1-4任一所述的方法,其特征在于,每个子目录的特征信息包括:厂家标识、产品标识以及设备类别码,所述基于每个子目录的特征信息,获得外围设备信息,包括:
将每个子目录的厂家标识、产品标识以及设备类别码与预先获取到的目标外围设备的厂家标识、产品标识以及设备类别码进行匹配;
对匹配成功的子目录的目录名进行解析,得到与所述匹配成功的子目录对应的外围设备信息,其中,每个外围设备信息包括:域、总线编号、设别编号以及功能编号。
6.一种设备探测装置,其特征在于,所述装置包括:
遍历目录模块,用于在用户态下遍历文件系统的根目录,所述根目录下包括多个子目录;
获取模块,用于获取每个子目录下所包括的文件组成的特征信息;
所述获取模块,还用于基于每个子目录的特征信息,获得外围设备信息;
保存模块,用于将所述外围设备信息保存为探测结果。
7.根据权利要求6所述的装置,其特征在于,在所述外围设备信息为多个外围设备信息时,
所述保存模块,用于将所述多个外围设备信息进行排序,将排序后的多个外围设备信息保存为探测结果。
8.根据权利要求7所述的装置,其特征在于,所述保存模块,包括:
获取子模块,用于获得每个外围设备信息的取值;
排序子模块,用于将每个外围设备信息的取值按照从小到大的顺序进行排序或按照从大到小的顺序进行排序。
9.根据权利要求8所述的装置,其特征在于,每个外围设备信息包括总线编号、设备编号以及功能编号,所述获取子模块,用于将每个外围设备信息所包括的总线编号、设备编号以及功能编号相加,获得每个外围设备信息的取值。
10.根据权利要求6-9任一所述的装置,其特征在于,每个子目录的特征信息包括:厂家标识、产品标识以及设备类别码,所述获取模块,包括:
匹配子模块,用于将每个子目录的厂家标识、产品标识以及设备类别码与预先获取到的目标外围设备的厂家标识、产品标识以及设备类别码进行匹配;
解析子模块,用于对匹配成功的子目录的目录名进行解析,得到与所述匹配成功的子目录对应的外围设备信息,其中,每个外围设备信息包括:域、总线编号、设别编号以及功能编号。
11.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器读取并运行时执行上述权利要求1至5任一权项所述的方法。
12.一种电子设备,其特征在于,包括可读存储介质和处理器,所述可读存储介质上存储有计算机程序,所述计算机程序被所述处理器读取并运行时执行上述权利要求1至5任一权项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711347307.9A CN109960534A (zh) | 2017-12-14 | 2017-12-14 | 设备探测方法、装置、存储介质以及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711347307.9A CN109960534A (zh) | 2017-12-14 | 2017-12-14 | 设备探测方法、装置、存储介质以及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109960534A true CN109960534A (zh) | 2019-07-02 |
Family
ID=67018623
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711347307.9A Pending CN109960534A (zh) | 2017-12-14 | 2017-12-14 | 设备探测方法、装置、存储介质以及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109960534A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110955582A (zh) * | 2019-11-24 | 2020-04-03 | 浪潮电子信息产业股份有限公司 | 一种内核信息输出方法、装置、设备及可读存储介质 |
CN112685210A (zh) * | 2020-12-31 | 2021-04-20 | 北京天融信网络安全技术有限公司 | 一种外设故障原因定位方法、装置、设备及介质 |
CN114153506A (zh) * | 2021-11-26 | 2022-03-08 | 上海弘积信息科技有限公司 | 一种负载均衡设备中驱动安全加速芯片的新方法 |
CN114338475A (zh) * | 2021-12-30 | 2022-04-12 | 北京天融信网络安全技术有限公司 | 一种link速率异常检测方法、装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103246594A (zh) * | 2013-04-08 | 2013-08-14 | 汉柏科技有限公司 | 一种基于Linux内核的用户态网卡自动探测方法 |
CN103631639A (zh) * | 2013-11-04 | 2014-03-12 | 天津汉柏信息技术有限公司 | 一种用户态虚拟网卡的自动探测方法 |
CN103744703A (zh) * | 2014-01-07 | 2014-04-23 | 汉柏科技有限公司 | 一种基于Linux内核的用户态自动探测及驱动加载3G-USB网卡方法 |
CN103777978A (zh) * | 2014-01-07 | 2014-05-07 | 汉柏科技有限公司 | 一种基于Linux内核的用户态自动探测3G-USB网卡方法 |
-
2017
- 2017-12-14 CN CN201711347307.9A patent/CN109960534A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103246594A (zh) * | 2013-04-08 | 2013-08-14 | 汉柏科技有限公司 | 一种基于Linux内核的用户态网卡自动探测方法 |
CN103631639A (zh) * | 2013-11-04 | 2014-03-12 | 天津汉柏信息技术有限公司 | 一种用户态虚拟网卡的自动探测方法 |
CN103744703A (zh) * | 2014-01-07 | 2014-04-23 | 汉柏科技有限公司 | 一种基于Linux内核的用户态自动探测及驱动加载3G-USB网卡方法 |
CN103777978A (zh) * | 2014-01-07 | 2014-05-07 | 汉柏科技有限公司 | 一种基于Linux内核的用户态自动探测3G-USB网卡方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110955582A (zh) * | 2019-11-24 | 2020-04-03 | 浪潮电子信息产业股份有限公司 | 一种内核信息输出方法、装置、设备及可读存储介质 |
CN112685210A (zh) * | 2020-12-31 | 2021-04-20 | 北京天融信网络安全技术有限公司 | 一种外设故障原因定位方法、装置、设备及介质 |
CN114153506A (zh) * | 2021-11-26 | 2022-03-08 | 上海弘积信息科技有限公司 | 一种负载均衡设备中驱动安全加速芯片的新方法 |
CN114338475A (zh) * | 2021-12-30 | 2022-04-12 | 北京天融信网络安全技术有限公司 | 一种link速率异常检测方法、装置、电子设备及存储介质 |
CN114338475B (zh) * | 2021-12-30 | 2023-12-01 | 北京天融信网络安全技术有限公司 | 一种link速率异常检测方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109960534A (zh) | 设备探测方法、装置、存储介质以及电子设备 | |
US9558203B2 (en) | Data mover discovery of object extent | |
CN104020961B (zh) | 分布式数据存储方法、装置及系统 | |
US7673031B1 (en) | Resource mapping in a network environment | |
CN110581903A (zh) | 一种多层内网穿透方法、系统及介质 | |
US20070156763A1 (en) | Storage management system and method thereof | |
CN109145051A (zh) | 分布式数据库的数据汇总方法及装置和电子设备 | |
CN110058821A (zh) | 一种查询服务器存储信息的方法及装置 | |
US6944797B1 (en) | Method and system for tracing | |
CN110008197A (zh) | 一种数据处理方法、系统及电子设备和存储介质 | |
CN109743309A (zh) | 一种非法请求识别方法、装置及电子设备 | |
CN110727664A (zh) | 用于对公有云数据执行目标操作的方法与设备 | |
US20090164717A1 (en) | Automated Correction of Contentious Storage Virtualization Configurations | |
CN109597707A (zh) | 克隆卷数据拷贝方法、装置及计算机可读存储介质 | |
CN106528830B (zh) | 一种恢复文件索引目录的方法和装置 | |
US9836491B1 (en) | Method and apparatus for hardware-implemented AVL tree updates | |
CN104317955B (zh) | 一种移动终端存储空间中的文件扫描方法和装置 | |
US7587421B2 (en) | Method, system, and article of manufacture for generating device specific requests | |
CN109446077A (zh) | 一种数据库测试方法及装置 | |
US20090164716A1 (en) | Adaptation of Contentious Storage Virtualization Configurations | |
CN107133163A (zh) | 一种验证描述类api的方法与设备 | |
US10621234B2 (en) | Method for discovering a group of interdependent computing objects within undirected graph structure in a computing environment corresponding to a set of known conditions | |
CN107704464A (zh) | 解析静态资源的路径的方法及装置 | |
US20070057956A1 (en) | Method, apparatus, and computer program product for implementing self-modeling computer systems componentry | |
CN106990998B (zh) | 虚拟机监控方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190702 |
|
RJ01 | Rejection of invention patent application after publication |