[发明专利]一种基于Linux内核的用户态自动探测及驱动加载3G-USB网卡方法在审
申请号: | 201410006535.X | 申请日: | 2014-01-07 |
公开(公告)号: | CN103744703A | 公开(公告)日: | 2014-04-23 |
发明(设计)人: | 高福亮 | 申请(专利权)人: | 汉柏科技有限公司 |
主分类号: | G06F9/445 | 分类号: | G06F9/445 |
代理公司: | 北京路浩知识产权代理有限公司 11002 | 代理人: | 李迪 |
地址: | 300384 天津市华*** | 国省代码: | 天津;12 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 linux 内核 用户 自动 探测 驱动 加载 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预先存储在全局变量中。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于汉柏科技有限公司,未经汉柏科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410006535.X/2.html,转载请声明来源钻瓜专利网。