[发明专利]Linux系统下用户态网卡自动探测及驱动加载的方法有效
申请号: | 201310098722.0 | 申请日: | 2013-03-26 |
公开(公告)号: | CN103150190A | 公开(公告)日: | 2013-06-12 |
发明(设计)人: | 高福亮 | 申请(专利权)人: | 汉柏科技有限公司 |
主分类号: | G06F9/445 | 分类号: | G06F9/445 |
代理公司: | 北京路浩知识产权代理有限公司 11002 | 代理人: | 王莹 |
地址: | 300384 天津市华*** | 国省代码: | 天津;12 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | linux 系统 用户 网卡 自动 探测 驱动 加载 方法 | ||
技术领域
本发明涉及计算机操作系统领域,特别涉及一种Linux系统下基于内核态的用户态网卡自动探测及驱动加载的方法。
背景技术
随着技术的不断发展,多核时代初期极大缓解了的CPU资源在配备10GE或更多网卡的网络包处理设备上又显得力不从心;究其原因,是由于报文的大量冲击引发的大量中断消耗了一定的CPU资源(特别是X86体系结构);Linux操作系统的内核态到用户态的数据拷贝损失的性能也将成为包处理设备无法充分利用多核CPU的拦路虎;因此,如何消除内核态驱动带来的系统调用及数据包拷贝的高额开销,成为了业内的主要研究范畴。
发明内容
针对现有技术的不足,本发明提供一种Linux系统下用户态网卡自动探测及驱动加载的方法,通过将网卡的自动探测及驱动加载均放在用户态,来消除内核态驱动带来的系统调用及数据包拷贝的高额开销。
为实现以上目的,本发明通过以下技术方案予以实现:
本发明提供一种Linux系统下用户态网卡自动探测及驱动加载的方法,包括以下步骤:
S1、在Linux内核初始化阶段,PCI总线注册各个驱动并扫描所有挂载在PCI总线上的设备;
S2、所述各个驱动分别遍历所述挂载在PCI总线上的设备,并判断所述驱动是否与该设备匹配,若是,则执行步骤S3,若不是,则返回步骤S1;
S3、判断所述设备的类别码是否为网卡设备的类别码,若不是,则将该设备初始化,若是,则执行步骤S4;
S4、将所述设备识别为网卡,保存所述网卡信息并放弃对所述网卡的初始化;
S5、用户态获取所述网卡信息,并根据所述网卡信息加载对应的网卡驱动。
优选的,所述步骤S2进一步包括:
所述各个驱动分别遍历所述挂载在PCI总线上的设备,并根据VendorID、Class以及DeviceID判断所述驱动是否与该设备匹配。
优选的,所述用户态包括大块内存申请的补丁以及Mmap内存映射。
优选的,所述步骤S5进一步包括:用户态通过ioctl函数访问内核态,获取所述内核态探测到的所述网卡信息。
优选的,所述步骤S5进一步包括:用户态根据所述网卡信息对所述网卡进行初始化。
优选的,所述网卡信息包括网卡类型、网卡个数、所述网卡对应的驱动类型以及网卡设备的总线编号、设备编号和功能编号。
本发明提供一种Linux系统下用户态网卡自动探测及驱动加载的方法,通过将网卡的自动探测及驱动加载均放在用户态,来消除内核态驱动带来的系统调用及数据包拷贝的高额开销,同时,用户态驱动提供了非常强悍的调试能力,能将驱动开发人员在Linux下繁琐的调试作业中解放出来,进一步提高开发效率。
附图说明
图1为本发明一实施例的流程图。
具体实施方式
下面对于本发明所提出的一种Linux系统下用户态网卡自动探测及驱动加载的方法,结合附图和实施例详细说明。
如图1所示,本发明提供一种Linux系统下用户态网卡自动探测及驱动加载的方法,包括以下步骤:
S1、在Linux内核初始化阶段,PCI总线注册各个驱动并扫描所有挂载在PCI总线上的设备;在内核初始化阶段PCI驱动加载会调用统一的接口pci_register_driver注册各个驱动;
S2、所述各个驱动分别遍历所述挂载在PCI总线上的设备,并判断所述驱动是否与该设备匹配,若是,则执行步骤S3,若不是,则返回步骤S1;
S3、判断所述设备的类别码是否为网卡设备的类别码,若不是,则将该设备初始化,若是,则执行步骤S4;
S4、将所述设备识别为网卡,保存所述网卡信息并放弃对所述网卡的初始化,所述网卡的类别码Class Code为0x20000
S5、用户态获取所述网卡信息,并根据所述网卡信息加载对应的网卡驱动。
优选的,所述步骤S2进一步包括:
所述各个驱动分别遍历所述挂载在PCI总线上的设备,并根据VendorID、Class以及DeviceID判断所述驱动是否与该设备匹配。
优选的,所述用户态包括大块内存申请的补丁以及Mmap内存映射;所述大块内存申请的补丁(Bigphysarea)用来解决Linux无法申请大块连续内存的问题;所述Mmap内存映射用来提供物理地址映射为用户态地址的功能,使得用户态空间可以访问到DMA的内存。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于汉柏科技有限公司,未经汉柏科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310098722.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种浮动式抓缸体机械爪
- 下一篇:分支箱抓帽器