CN103744703A - 一种基于Linux内核的用户态自动探测及驱动加载3G-USB网卡方法 - Google Patents

一种基于Linux内核的用户态自动探测及驱动加载3G-USB网卡方法 Download PDF

Info

Publication number
CN103744703A
CN103744703A CN201410006535.XA CN201410006535A CN103744703A CN 103744703 A CN103744703 A CN 103744703A CN 201410006535 A CN201410006535 A CN 201410006535A CN 103744703 A CN103744703 A CN 103744703A
Authority
CN
China
Prior art keywords
usb network
usb
network interface
interface card
driving
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
Application number
CN201410006535.XA
Other languages
English (en)
Inventor
高福亮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Opzoon Technology Co Ltd
Original Assignee
Opzoon Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Opzoon Technology Co Ltd filed Critical Opzoon Technology Co Ltd
Priority to CN201410006535.XA priority Critical patent/CN103744703A/zh
Publication of CN103744703A publication Critical patent/CN103744703A/zh
Pending legal-status Critical Current

Links

Images

Abstract

本发明涉及一种基于Linux内核的用户态自动探测及驱动加载3G-USB网卡方法,在Linux内核初始化阶段,USB总线注册各个驱动并扫描所有挂载在USB总线上的设备,判断驱动是否与该设备匹配,若匹配,则继续判断该设备的厂商ID是否为3G-USB网卡设备的厂商ID,若不是,则将该设备初始化;若是,则将设备识别为3G-USB网卡,保存3G-USB网卡信息并放弃对3G-USB网卡的初始化,且用户态获取3G-USB网卡信息,并根据3G-USB网卡信息加载对应的3G-USB网卡驱动。本发明将3G-USB网卡的自动探测和及驱动加载均放在用户态,来消除内核态驱动带来的系统调用及数据包拷贝的高额开销,同时,用户态驱动提供了非常强悍的调试能力,能将驱动开发人员在Linux下繁琐的调试作业中解放出来,进一步提高开发效率。

Description

一种基于Linux内核的用户态自动探测及驱动加载3G-USB网卡方法
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于Linux内核的用户态自动探测及驱动加载3G-USB网卡方法。 
背景技术
随着技术的不断发展,多核时代初期极大缓解了CPU资源在配备10GE或更多网卡的网络包处理设备上又显得力不从心,究其原因,是由于报文的大量冲击引发的大量中断消耗了一定的CPU资源,特别是X86体系结构;Linux操作系统的内核态到用户态的数据拷贝损失的性能也将成为包处理设备无法充分利用多核CPU的拦路虎;因此,如果消除内核态驱动带来的系统调用及数据包拷贝的高额开销,成为了业内的主要研究问题。 
发明内容
本发明所要解决的技术问题是如何能够减少对Linux内核的修改,对用户态3G-USB网卡驱动实现如Linux内核一样的自动探测和加载。 
为此目的,本发明提出了一种基于Linux内核的用户态自动探测及驱动加载3G-USB网卡方法,所述方法具体包括: 
S1:在Linux内核初始化阶段,USB总线注册各个驱动并扫描所有挂载在USB总线上的设备; 
S2:所述各个驱动分别遍历所有挂载在所述USB总线上的设备,并判断所述驱动是否与该设备匹配,若是,则执行步骤S3,若不是,则返回步骤S1; 
S3:判断所述设备的厂商ID是否为3G-USB网卡设备的厂商ID,若不是,则将该设备初始化,若是,则执行步骤S4; 
S4:将所述设备识别为3G-USB网卡,保存所述3G-USB网卡信息并放弃对所述3G-USB网卡的初始化; 
S5:用户态获取所述3G-USB网卡信息,并根据所述3G-USB网卡信息加载对应的3G-USB网卡驱动。 
优选的,所述步骤S2进一步包括: 
所述各个驱动分别遍历所有挂载在所述USB总线上的设备,并根据VendorID以及DeviceID判断所述驱动是否与该设备匹配。 
优选的,所述步骤S5进一步包括:用户态通过iocl函数访问内核态,获取所述内核态探测到的所述3G-USB网卡信息。 
优选的,所述步骤S5进一步包括:用户态根据所述3G-USB网卡信息对所述3G-USB网卡进行初始化。 
优选的,所述3G-USB网卡信息包括3G-USB网卡类型、3G-USB网卡个数、3G-USB网卡对应的驱动类型以及3G-USB网卡设备的总线编号、设备编号和、厂商ID和产品ID。。 
通过采用本发明所公开一种基于Linux内核的用户态自动探测及驱动加载3G-USB网卡方法,通过将3G-USB网卡的自动探测及驱动加载均放在用户态,来消除内核态驱动带来的系统调用及数据包拷贝的高额开销,同时,用户态驱动提供了非常强悍的调试能力,能将驱动开发人员在Linux下繁琐的调试作业中解放出来,进一步提高开发效率。 
附图说明
通过参考附图会更加清楚的理解本发明的特征和优点,附图是示意性的而不应理解为对本发明进行任何限制,在附图中: 
图1示出了本发明实施例中的一种基于Linux内核的用户态自动探测及驱动加载3F-USB网卡方法的步骤流程图。 
具体实施方式
下面将结合附图对本发明的实施例进行详细描述。 
如图1所述,本发明提供了一种基于Linux内核的用户态自动探测及驱动加载3G-USB网卡方法,包括以下步骤: 
步骤S1:在Linux内核初始化阶段,USB总线注册各个驱动并扫描所有挂载在USB总线上的设备;在内核初始化阶段USB驱动加载会调用统一接口usb_register_driver注册各个驱动。 
步骤S2:各个驱动分别遍历所有挂载在USB总线上的设备,并判断驱动是否与该设备匹配,若是,则执行步骤S3,若不是,则返回步骤S1。 
具体地,步骤S2进一步包括: 
各个驱动分别遍历所有挂载在USB总线上的设备,并根据VendorID以及DeviceID判断驱动是否与该设备匹配。根据设备的VendorID、DeviceID等信息的匹配情况,判定该驱动是否能支持挂载在USB总线上的该设备。 
具体地,利用usb_match_device函数对遍历的所有挂载在USB总线上的设备与预先存储在全局变量中的设备信息进行匹配。其中,将192d,即为中兴的VendorID;12d1,即为华为的VendorID预先存储在全局变量中。 
步骤S3:判断设备的厂商ID是否为3G-USB网卡设备的厂商ID,若不是,则将该设备初始化,若是,则执行步骤S4。 
步骤S4:将设备识别为3G-USB网卡,保存3G-USB网卡信息并放 弃对3G-USB网卡的初始化。 
步骤S5:用户态获取3G-USB网卡信息,并根据3G-USB网卡信息加载对应的3G-USB网卡驱动。 
具体地,用户态获取3G-USB网卡信息包括3G-USB网卡类型、3G-USB网卡个数、3G-USB网卡对应的驱动类型以及3G-USB网卡设备的总线编号、设备编号和、厂商ID和产品ID。 
进一步地,步骤S5进一步包括:用户态通过iocl函数访问内核态,获取内核态探测到的3G-USB网卡信息。 
进一步地,步骤S5进一步包括:用户态根据3G-USB网卡信息对3G-USB网卡进行初始化。 
本发明提供一种基于Linux内核的用户态自动探测及驱动加载3G-USB网卡方法,通过将3G-USB网卡的自动探测及驱动加载均放在用户态,来消除内核态驱动带来的系统调用及数据包拷贝的高额开销,同时,用户态驱动提供了非常强悍的调试能力,能将驱动开发人员在Linux下繁琐的调试作业中解放出来,进一步提高开发效率。 
虽然结合附图描述了本发明的实施方式,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。 

Claims (5)

1.一种基于Linux内核的用户态自动探测及驱动加载3G-USB网卡方法,其特征在于,所述方法具体包括:
S1:在Linux内核初始化阶段,USB总线注册各个驱动并扫描所有挂载在USB总线上的设备;
S2:所述各个驱动分别遍历所有挂载在所述USB总线上的设备,并判断所述驱动是否与该设备匹配,若是,则执行步骤S3,若不是,则返回步骤S1;
S3:判断所述设备的厂商ID是否为3G-USB网卡设备的厂商ID,若不是,则将该设备初始化,若是,则执行步骤S4;
S4:将所述设备识别为3G-USB网卡,保存所述3G-USB网卡信息并放弃对所述3G-USB网卡的初始化;
S5:用户态获取所述3G-USB网卡信息,并根据所述3G-USB网卡信息加载对应的3G-USB网卡驱动。
2.如权利要求1所述的方法,其特征在于,所述步骤S2进一步包括:
所述各个驱动分别遍历所有挂载在所述USB总线上的设备,并根据VendorID以及DeviceID判断所述驱动是否与该设备匹配。
3.如权利要求1所述的方法,其特征在于,所述步骤S5进一步包括:用户态通过ioctl函数访问内核态,获取所述内核态探测到的所述3G-USB网卡信息。
4.如权利要求1所述的方法,其特征在于,所述步骤S5进一步包括:用户态根据所述3G-USB网卡信息对所述3G-USB网卡进行初始化。
5.如权利要求1-4任一项所述的方法,其特征在于,所述3G-USB网卡信息包括3G-USB网卡类型、3G-USB网卡个数、3G-USB网卡对应的驱动类型以及3G-USB网卡设备的总线编号、设备编号、厂商ID和产品ID。
CN201410006535.XA 2014-01-07 2014-01-07 一种基于Linux内核的用户态自动探测及驱动加载3G-USB网卡方法 Pending CN103744703A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410006535.XA CN103744703A (zh) 2014-01-07 2014-01-07 一种基于Linux内核的用户态自动探测及驱动加载3G-USB网卡方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410006535.XA CN103744703A (zh) 2014-01-07 2014-01-07 一种基于Linux内核的用户态自动探测及驱动加载3G-USB网卡方法

Publications (1)

Publication Number Publication Date
CN103744703A true CN103744703A (zh) 2014-04-23

Family

ID=50501723

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410006535.XA Pending CN103744703A (zh) 2014-01-07 2014-01-07 一种基于Linux内核的用户态自动探测及驱动加载3G-USB网卡方法

Country Status (1)

Country Link
CN (1) CN103744703A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104123229A (zh) * 2014-07-21 2014-10-29 上海斐讯数据通信技术有限公司 能使报文高效地从内核态提交到用户态的方法及系统
CN109960534A (zh) * 2017-12-14 2019-07-02 迈普通信技术股份有限公司 设备探测方法、装置、存储介质以及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2259176A2 (en) * 2009-06-03 2010-12-08 Brother Kogyo Kabushiki Kaisha Printer and printing system
CN103150190A (zh) * 2013-03-26 2013-06-12 汉柏科技有限公司 Linux系统下用户态网卡自动探测及驱动加载的方法
CN103246594A (zh) * 2013-04-08 2013-08-14 汉柏科技有限公司 一种基于Linux内核的用户态网卡自动探测方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2259176A2 (en) * 2009-06-03 2010-12-08 Brother Kogyo Kabushiki Kaisha Printer and printing system
CN103150190A (zh) * 2013-03-26 2013-06-12 汉柏科技有限公司 Linux系统下用户态网卡自动探测及驱动加载的方法
CN103246594A (zh) * 2013-04-08 2013-08-14 汉柏科技有限公司 一种基于Linux内核的用户态网卡自动探测方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
FANQIPIN: "《CSDN:http://blog.csdn.net/fanqipin/article/details/8153053》", 13 November 2012 *
TANKAI19880619: "<CSDN:http://blog.csdn.net/tankai19880619/article/details/11639185>", 13 September 2013 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104123229A (zh) * 2014-07-21 2014-10-29 上海斐讯数据通信技术有限公司 能使报文高效地从内核态提交到用户态的方法及系统
CN104123229B (zh) * 2014-07-21 2017-10-24 上海斐讯数据通信技术有限公司 能使报文高效地从内核态提交到用户态的方法及系统
CN109960534A (zh) * 2017-12-14 2019-07-02 迈普通信技术股份有限公司 设备探测方法、装置、存储介质以及电子设备

Similar Documents

Publication Publication Date Title
CN107423169B (zh) 用于测试高速外围设备互连设备的方法和系统
JP5706036B2 (ja) 複合仮想グラフィクスデバイス
JP6004608B2 (ja) ホストusbアダプタを仮想化するための方法、装置、およびコンピュータ・プログラム(ホストusbアダプタの仮想化)
KR101935290B1 (ko) 플랫폼-특유의 피쳐들을 선택적으로 인에이블하기
CN103150190B (zh) Linux系统下用户态网卡自动探测及驱动加载的方法
US20130055254A1 (en) Methods and apparatuses for providing a virtual machine with dynamic assignment of a physical hardware resource
JP2015501048A5 (zh)
US9563437B2 (en) Technologies for pre-memory phase initialization of a computing device
CN103645945A (zh) 一种虚拟网卡的自动探测及驱动加载方法
US20150042664A1 (en) Scale-up techniques for multi-gpu passthrough
EP2898407A1 (en) Isolated guest creation in vlrtualized computing system
US20150220139A1 (en) System and Method for Automatic Detection and Switching Between USB Host and Device Rolls on a Type-A Connector
WO2015065323A1 (en) Flexible bootstrap code architecture
CN103853586A (zh) 一种在uefi层实现无线网卡驱动的方法
US10402204B1 (en) Multi-platform firmware support
KR20150087177A (ko) 운영 시스템 복구 방법 및 장치, 그리고 단말기기
US20140298327A1 (en) System and Method for Automating Virtual Network Provisioning
CN114398172A (zh) 资源配置方法、装置、电子设备及计算机可读存储介质
CN110688235B (zh) Uefi固件与os间共享无线连接信息的系统及方法
US10491736B2 (en) Computer system and method thereof for bluetooth data sharing between UEFI firmware and OS
US9164788B2 (en) Apparatus and method for automatic para-virtualization of OS kernel
US10133654B1 (en) Firmware debug trace capture
CN103744703A (zh) 一种基于Linux内核的用户态自动探测及驱动加载3G-USB网卡方法
US11392512B2 (en) USB method and apparatus in a virtualization environment with multi-VM
CN108958837B (zh) 一种动态配置me固件的方法、系统及介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20140423