CN103744703A - 一种基于Linux内核的用户态自动探测及驱动加载3G-USB网卡方法 - Google Patents
一种基于Linux内核的用户态自动探测及驱动加载3G-USB网卡方法 Download PDFInfo
- 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
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网卡方法。
背景技术
随着技术的不断发展,多核时代初期极大缓解了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。
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)
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)
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内核的用户态网卡自动探测方法 |
-
2014
- 2014-01-07 CN CN201410006535.XA patent/CN103744703A/zh active Pending
Patent Citations (3)
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)
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)
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 |