CN104077190A - 一种arm网口驱动的用户态移植方法和*** - Google Patents

一种arm网口驱动的用户态移植方法和*** Download PDF

Info

Publication number
CN104077190A
CN104077190A CN201410251940.8A CN201410251940A CN104077190A CN 104077190 A CN104077190 A CN 104077190A CN 201410251940 A CN201410251940 A CN 201410251940A CN 104077190 A CN104077190 A CN 104077190A
Authority
CN
China
Prior art keywords
state
user
arm
function
arm network
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
CN201410251940.8A
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 CN201410251940.8A priority Critical patent/CN104077190A/zh
Publication of CN104077190A publication Critical patent/CN104077190A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种ARM网口驱动的用户态移植方法和***,所述方法包括:去除内核态中ARM网口初始化函数;将去除的所述ARM网口初始化函数中关于ARM网口驱动初始化及收发报文相关的函数移植到用户态;用户态从内核态中获取大块连续内存,并对所述大块连续内存进行单独管理;用户态获取ARM网口硬件寄存器的物理基地址及寄存器空间大小;用户态执行ARM网口的初始化函数进行ARM网口驱动加载,通过所述大块连续内存实现数据的存储和释放,收发报文。本发明将ARM网口的驱动加载以及网络数据报文的处理均放在用户态,消除了内核态驱动带来的***调用及数据包拷贝的高额开销,优化了CPU性能。

Description

一种ARM网口驱动的用户态移植方法和***
技术领域
本发明属于计算机网络技术领域,具体涉及一种ARM网口驱动的用户态移植方法和***。
背景技术
ARM CPU多为内核驱动,网口初始化与收发报文都部署在内核态,这样在数据报文大流量的冲击下会引发大量程序的中断,导致CPU资源的额外消耗。同时,操作***的内核态到用户态的数据拷贝也会损耗大量的CPU性能。另外,内核调试手段也相对缺乏,较之用户态相比开发效率低下。
ARM CPU的内核态承载了过多驱动加载、报文处理,使得ARM在内核态下工作效率低下;同时,ARM在内核态下的调试手段也有很大的局限性,使得ARM在内核态下工作效率很难提高。
发明内容
本发明的目的是提供一种ARM网口驱动的用户态移植方法和***,将ARM网口的驱动加载以及网络数据报文的处理均放在用户态,消除了内核态驱动带来的***调用及数据包拷贝的高额开销,以解决使用内核态驱动加载ARM网口以及收发报文导致损耗大量CPU性能,优化CPU性能。
根据本发明的一个方面,提供一种ARM网口驱动的用户态移植方法,所述方法包括以下步骤:步骤S1,去除内核态中ARM网口初始化函数;步骤S2,将去除的所述ARM网口初始化函数中关于ARM网口驱动初始化及收发报文相关的函数移植到用户态;步骤S3,用户态从内核态中获取大块连续内存,并对所述大块连续内存进行单独管理,使得用户态具有访问DMA内存的权限;步骤S4,用户态获取ARM网口硬件寄存器的物理基地址及寄存器空间大小,使得用户态具有读写ARM网口的硬件寄存器的权限;步骤S5,用户态执行ARM网口的初始化函数进行ARM网口驱动加载,通过所述大块连续内存实现数据的存储和释放,收发报文。
其中,在本发明中,所述步骤S2进一步包括:步骤S21,将与ARM网口驱动初始化及收发报文相关的处理函数移植到用户态;步骤S22,对用户态中植入的与ARM网口驱动初始化及收发报文相关的处理函数进行整改,去掉用户态不需要的操作;步骤S23,创建线程进行收包,将整改后的所述函数编译链接生成可执行程序。
其中,在本发明中,所述步骤S3进一步包括:步骤S31,在内核态初始化时,利用大块内存申请补丁Bigphysarea申请大块连续内存,以备用户态收发报文申请数据结构skb使用;步骤S32,用户态通过管理函数ioctl方式从内核态获取已申请的所述大块连续内存的地址和大小;步骤S33,采用mmap函数将所述大块连续内存的地址映射为用户态可操作的虚拟地址。
其中,在本发明中,所述步骤S4进一步包括:步骤S41,用户态获取ARM网口硬件寄存器的物理基地址及寄存器空间大小;步骤S42,用户态将获取的所述硬件寄存器的物理基地址及寄存器空间的大小定义为宏,通过mmap函数将硬件寄存器的物理基地址映射为用户态虚拟地址。
其中,在本发明中,所述步骤S5进一步包括:用户态执行ARM网口的初始化函数并加载驱动后,分配收发资源,通过控制寄存器的配置、接口注册及收发函数挂载,实现收发报文。
根据本发明的另一方面,提供一种ARM网口驱动的用户态移植***,所述***包括:去除单元,用于去除内核态中ARM网口初始化函数;移植单元,用于将所述去除单元去除的ARM网口初始化函数中关于ARM网口驱动初始化及收发报文相关的函数移植到用户态;内存获取单元,用于从内核态中获取大块连续内存,并对所述大块连续内存进行单独管理,使得用户态具有访问DMA内存权限;硬件寄存器获取单元,用于通过用户态获取ARM网口硬件寄存器的物理基地址及寄存器空间大小,使得用户态具有读写ARM网口的硬件寄存器的权限;执行单元,用于执行ARM网口的初始化函数进行ARM网口驱动加载,通过所述大块连续内存实现数据的存储和释放,收发报文。
其中,在本发明中,所述移植单元包括移植模块、整改模块和收包模块;所述移植模块用于将与ARM网口驱动相关的函数移植到用户态;所述整改模块用于对用户态中植入的与ARM网口驱动相关的函数进行整改,去掉用户态不需要的操作函数;所述收包模块用于创建线程进行收包,并将整改后的所述函数编译链接生成可执行程序。
其中,在本发明中,所述内存获取单元包括内存申请模块、内存地址获取模块和内存地址映射模块;所述内存申请模块用于内核态初始化时,利用Bigphysarea申请大块连续内存,以备用户态收发报文申请skb使用;所述内存地址获取模块用于通过ioctl方式从内核态获取已申请的所述大块连续内存的地址和大小;所述内存地址映射模块用于采用mmap函数将所述大块连续内存的地址映射为用户态可操作的虚拟地址。
其中,在本发明中,所述硬件寄存器获取单元包括硬件寄存器地址获取模块和硬件寄存器地址映射模块;所述硬件寄存器地址获取模块用于通过用户态获取ARM网口硬件寄存器的物理基地址及寄存器空间大小;所述硬件寄存器地址映射模块用于将获取的所述硬件寄存器的物理基地址及寄存器空间的大小定义为宏,通过mmap函数将硬件寄存器的物理基地址映射为用户态虚拟地址。
其中,在本发明中,所述执行单元进一步用于在用户态执行ARM网口的初始化函数并加载驱动后,分配收发资源,通过控制寄存器的配置、接口注册及收发函数挂载,实现用户态收发报文。
根据本发明的一种ARM网口驱动的用户态移植方法和***,将ARM网口的驱动加载以及网络数据报文的处理均放在用户态,消除了内核态驱动带来的***调用及数据包拷贝的高额开销,降低了CPU性能的消耗,优化了CPU性能;另外,用户态驱动具有强悍的调试能力,能将驱动开发人员在操作***繁琐的调试作业中解放出来,进一步提高了开发效率。
附图说明
图1显示了本发明的ARM网口驱动的用户态移植的原理图;
图2显示了本发明优选实施例的ARM网口驱动的用户态移植方法的流程图;
图3显示了图2中步骤S2的子流程图;
图4显示了图2中步骤S3的子流程图;
图5显示了图2中步骤S4的子流程图;
图6显示了本发明优选实施例的ARM网口驱动的用户态移植***的结构示意图;
图7显示了本发明优选实施例的移植单元的结构示意图;
图8显示了本发明优选实施例的内存获取单元的结构示意图;
图9显示了本发明优选实施例的硬件寄存器获取单元的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明了,下面结合具体实施方式并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
图1显示了本发明的ARM网口驱动的用户态移植的原理图。
如图1所示,在本发明中,去掉内核中ARM网口的初始化函数,将ARM网口初始化函数中ARM网口的驱动加载以及网络数据报文的处理均放在用户态,使得内核不再处理网口加载和收发报文,而直接由用户态驱动网口和收发报文,消除了内核态驱动带来的***调用及数据包拷贝的高额开销,降低了CPU性能的损耗。
图2显示了本发明优选实施例的ARM网口驱动的用户态移植方法的流程图;图3显示了图2中步骤S2的子流程图;图4显示了图2中步骤S3的子流程图;图5显示了图2中步骤S4的子流程图。
如图2所示,本发明优选实施例的ARM网口驱动的用户态移植方法,包括以下步骤:
步骤S1,去除内核中ARM网口初始化函数。
一般地,ARM CPU多为内核驱动,网口初始化与收发报文都部署在内核态,使得操作***通过内核态来收发报文,再将报文拷贝至用户态。在步骤S1中,将操作***内核中ARM网口初始化函数去掉,此时,内核不再用于网卡驱动及收发包处理,即内核不再初始化及挂载ARM网口的任何处理函数,不再使用中断收发报文,相关操作都在用户态进行。这里的操作***可以是Linux操作***,也可以是windows操作***或其他操作***。
步骤S2,将去除的所述ARM网口初始化函数中关于ARM网口驱动初始化及收发报文相关的函数移植到用户态。
本步骤将内核中的ARM网口初始化函数中关于ARM网口驱动初始化及收发报文相关的函数移植到用户态网口,使得用户态直接驱动网口并收发报文,消除内核态驱动带来的***调用及数据包拷贝的高额开销,降低CPU性能的消耗。
其中,步骤S2如图3所示,包括下述子步骤:
步骤S21,将与ARM网口驱动初始化及收发报文相关的处理函数移植到用户态。即将内核中的与ARM网口驱动初始化及收发报文相关的处理函数移植到用户态。
步骤S22,对用户态中植入的与ARM网口驱动初始化及收发报文相关的处理函数进行整改,去掉用户态不需要的操作。并不是将所有与ARM网口驱动初始化及收发报文相关的处理函数都保留在用户态网口,而是为了在提高***转发性能的同时尽量减小CPU性能的消耗,将一些用户态不需要的操作去掉,例如CPU控制等是用户态所不需要的操作,因此可以去掉。
步骤S23,创建线程进行收包,将整改后的所述函数编译链接生成可执行程序。具体来说,创建线程采用轮询方式进行收包,编译链接生成可执行程序。
步骤S3,用户态从内核态中获取大块连续内存,并对所述大块连续内存进行单独管理,使得用户态具有访问DMA内存的权限。
具体来说,步骤S3如图4所示,包括下述子步骤:
步骤S31,在内核态初始化时,利用Bigphysarea申请大块连续内存,以备用户态收发报文申请skb使用。其中,skb是标识报文的一个数据结构,包括报文头、数据段等,内核的所有业务处理都基于skb数据结构完成。Bigphysarea为大块内存申请的补丁,可以有效地解决操作***无法申请大块连续内存的问题。在步骤S31中,优选地,向内核态申请大小为300M的连续内存,当然所要申请的连续内存的大小可以根据操作***总内存的大小自行定义,如果总内存越大,相应地可以申请更大的连续内存,反之要减小所要申请的连续内存的大小。
步骤S32,用户态通过ioctl方式从内核态获取已申请的所述大块连续内存的地址和大小。其中ioctl是设备驱动程序中对设备的I/O通道进行管理的函数,可用于用户态和内核态间通信。具体地,在本步骤中,通过ioctl方式对申请的内存进行检测,检测出该内存的地址和大小,如果检测到地址和大小相符,则进行获取。
步骤S33,采用mmap函数将所述大块连续内存的地址映射为用户态可操作的虚拟地址。收发报文使用的skb申请和释放可以在映射后的这块内存中进行。
在步骤S33中,完成地址的映射操作,将步骤S31中申请到的内存的地址映射为用户态可操作的虚拟地址,使得用户态可以对这块物理连续内存进行单独管理,以实现用户态具有访问DMA内存的权限。
步骤S4,用户态获取ARM网口硬件寄存器的物理基地址及寄存器空间大小,使得用户态具有读写ARM网口的硬件寄存器的权限。
具体来说,步骤S4如图5所示,包括下述子步骤:
步骤S41,用户态获取ARM网口硬件寄存器的物理基地址及寄存器空间大小。
步骤S42,用户态将获取的所述硬件寄存器的物理基地址及寄存器空间的大小定义为宏,通过mmap函数将硬件寄存器的物理基地址映射为用户态虚拟地址。
通过步骤S41和步骤S42的流程,用户态先获取ARM网口硬件寄存器的物理基地址及寄存器空间的大小,再使用mmap函数将硬件寄存器的物理基地址映射为用户态虚拟地址,使得用户态可以对ARM网口的硬件寄存器进行管理,使得用户态可以读写ARM网口的硬件控制寄存器。
步骤S5,用户态执行ARM网口的初始化函数进行ARM网口驱动加载,通过所述大块连续内存实现数据的存储和释放,收发报文。
在步骤S5中,用户态执行ARM网口的初始化函数,该执行过程和内核执行过程相似,在所有与ARM网口驱动及收发相关的操作中都需执行。具体地,用户态执行ARM网口的初始化函数并加载驱动后,分配收发资源,控制寄存器的配置、接口注册及收发函数挂载,实现用户态收发报文。其中分配收发的资源包括队列、描述符、buffer缓存等。
通过采用上述流程,先采用Bigphysarea申请大块连续内存,然后采用mmap函数将申请的内存的物理基地址映射为用户态虚拟地址,使得用户态可以访问到DMA的内存,并且在用户态进行ARM网口的驱动初始化及相关硬件控制寄存器的配置,实现了用户态驱动ARM网口以及收发报文,消除了内核态驱动带来的***调用及数据包拷贝的高额开销,进而提高了设备的转发性能,优化了CPU性能。
图6显示了本发明优选实施例的ARM网口驱动的用户态移植***的结构示意图;图7显示了本发明优选实施例的移植单元的结构示意图;图8显示了本发明优选实施例的内存获取单元的结构示意图;图9显示了本发明优选实施例的硬件寄存器获取单元的结构示意图。
如图6所示,本发明优选实施例的ARM网口驱动的用户态移植***,包括以下部件:去除单元1、移植单元2、内存获取单元3、硬件寄存器获取单元4以及执行单元5。
去除单元1,连接到内核态,用于去除内核态中ARM网口初始化函数。一般地,ARM CPU多为内核驱动,网口初始化与收发报文都部署在内核态,使得操作***通过内核态来收发报文,再将报文拷贝至用户态。本发明中,去除单元1将操作***内核中ARM网口初始化函数去掉,使得内核不再用于网卡驱动及收发报文处理,即内核不再初始化及挂载ARM网口的任何处理函数,不再使用中断收发报文,相关操作都在用户态进行。
这里的操作***可以是Linux操作***,也可以是windows操作***或其他操作***。
移植单元2,连接到去除单元1和用户态,用于将去除单元1去除的ARM网口初始化函数中关于ARM网口驱动初始化及收发报文相关的函数移植到用户态网口。具体地,移植单元2将内核中的ARM网口初始化函数中关于ARM网口驱动初始化及收发报文相关的函数移植到用户态网口,使得用户态直接驱动网口并收发报文,消除内核态驱动带来的***调用及数据包拷贝的高额开销,降低CPU性能的消耗,提高设备的转发性能。
其中,移植单元2的结构如图7所示,包括移植模块21、整改模块22和收包模块23。
移植模块21,用于将与ARM网口驱动初始化及收发报文相关的处理函数移植到用户态网口,即移植模块21将内核中的与ARM网口驱动初始化及收发报文相关的处理函数移植到用户态网口。
整改模块22,对用户态中植入的与ARM网口驱动初始化及收发报文相关的处理函数进行整改,去掉用户态不需要的操作。并不是将所有与ARM网口驱动初始化及收发报文相关的处理函数都保留在用户态,而是为了在提高***转发性能的同时尽量减小CPU性能的消耗,整改模块22将一些用户态不需要的操作去掉,例如CPU控制等是用户态所不需要的操作,因此可以去掉。
收包模块23,用于创建线程进行收包,并编译链接生成可执行程序。具体来说,收包模块23创建线程采用轮询方式进行收包,编译链接生成可执行程序。
内存获取单元3,连接到内核态和用户态,用于从内核态中获取大块连续内存,并对所述大块连续内存进行单独管理,使得用户态具有访问DMA内存的权限。
其中,内存获取单元3的结构如图8所示,包括内存申请模块31、内存地址获取模块32和内存地址映射模块33。
内存申请模块31,用于在在内核态初始化时,利用Bigphysarea申请大块连续内存,以备用户态收发报文申请skb使用。具体地,在内核态初始化时,内存申请模块31利用Bigphysarea向内核申请大块连续内存,以备用户态收发报文申请skb使用,skb是标识报文的一个数据结构,包括报文头、数据段等,内核的所有业务处理都基于skb数据结构完成,其中Bigphysarea为大块内存申请的补丁,可以有效地解决操作***无法申请大块连续内存的问题。优选地,内存申请模块31向内核申请大小为300M的连续内存,当然所要申请的连续内存的大小可以根据操作***总内存的大小自行定义,如果总内存越大,相应地可以申请更大的连续内存,反之要减小所要申请的连续内存的大小。
内存地址获取模块32,用于通过ioctl方式从内核态获取内存申请模块31所申请的所述大块连续内存的地址和大小。具体地,内存地址获取模块32通过ioctl方式对申请的内存进行检测,检测出该内存的地址和大小,如果检测到地址和大小相符,则进行获取。
内存地址映射模块33,用于采用mmap函数将内存地址获取模块32获取的所述大块连续内存的地址映射为用户态可操作的虚拟地址,使得收发报文使用的skb申请和释放可以在映射后的这块内存中进行。具体地,内存地址映射模块33将内存申请模块31所申请到的内存的地址映射为用户态可操作的虚拟地址,使得用户态可以对这块物理连续内存进行单独管理,以实现用户态可以访问到DMA的内存。
硬件寄存器获取单元4,用于通过用户态获取ARM网口硬件寄存器的物理基地址及寄存器空间大小,使得用户态具有读写ARM网口的硬件寄存器的权限。
其中,硬件寄存器获取单元4的结构如图9所示,包括硬件寄存器地址获取模块41和硬件寄存器地址映射模块42。
硬件寄存器地址获取模块41,用于通过用户态获取ARM网口硬件寄存器的物理基地址及寄存器空间大小。
硬件寄存器地址映射模块42,用于将硬件寄存器地址获取模块41所获取的硬件寄存器的物理基地址及寄存器空间的大小定义为宏,通过mmap函数将硬件寄存器的物理基地址映射为用户态虚拟地址。
具体来说,在硬件寄存器地址获取模块41通过用户态获取ARM网口硬件寄存器的物理基地址及寄存器空间的大小之后,硬件寄存器地址映射模块42使用mmap函数将硬件寄存器的物理基地址映射为用户态虚拟地址,使得用户态可以对ARM网口的硬件寄存器进行管理,使得用户态可以读写ARM网口的硬件控制寄存器。
执行单元5,用于执行ARM网口的初始化函数进行ARM网口驱动加载,通过所述大块连续内存实现数据的存储和释放,收发报文。该执行过程和内核执行过程相似,在所有与ARM网口驱动及收发相关的操作中都需执行。具体地,报文收发单元5在执行ARM网口的初始化函数并加载驱动后,分配收发资源,控制寄存器的配置、接口注册及收发函数挂载,实现用户态收发报文。其中分配收发的资源包括队列、描述符、buffer缓存等。
如上所述,根据本发明的一种ARM网口驱动的用户态移植方法和***,将ARM网口的驱动加载以及网络数据报文的处理均放在用户态,消除了内核态驱动带来的***调用及数据包拷贝的高额开销,降低了CPU性能的消耗;另外,用户态驱动具有强悍的调试能力,能将驱动开发人员在操作***繁琐的调试作业中解放出来,进一步提高了开发效率。
应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。

Claims (10)

1.一种ARM网口驱动的用户态移植方法,其特征在于,所述方法包括以下步骤:
步骤S1,去除内核态中ARM网口初始化函数;
步骤S2,将去除的所述ARM网口初始化函数中关于ARM网口驱动初始化及收发报文相关的函数移植到用户态;
步骤S3,用户态从内核态中获取大块连续内存,并对所述大块连续内存进行单独管理,使得用户态具有访问DMA内存的权限;
步骤S4,用户态获取ARM网口硬件寄存器的物理基地址及寄存器空间大小,使得用户态具有读写ARM网口的硬件寄存器的权限;
步骤S5,用户态执行ARM网口的初始化函数进行ARM网口驱动加载,通过所述大块连续内存实现数据的存储和释放,收发报文。
2.根据权利要求1所述的方法,其特征在于,所述步骤S2进一步包括:
步骤S21,将与ARM网口驱动初始化及收发报文相关的函数移植到用户态;
步骤S22,对用户态中植入的与ARM网口驱动初始化及收发报文相关的函数进行整改,去掉用户态不需要的操作;
步骤S23,创建线程进行收包,将整改后的所述函数编译链接生成可执行程序。
3.根据权利要求1所述的方法,其特征在于,所述步骤S3进一步包括:
步骤S31,在内核态初始化时,利用大块内存申请补丁申请大块连续内存,以备用户态收发报文申请数据结构使用;
步骤S32,用户态通过管理函数ioctl方式从内核态获取已申请的所述大块连续内存的地址和大小;
步骤S33,采用mmap函数将所述大块连续内存的地址映射为用户态可操作的虚拟地址。
4.根据权利要求1所述的方法,其特征在于,所述步骤S4进一步包括:
步骤S41,用户态获取ARM网口硬件寄存器的物理基地址及寄存器空间大小;
步骤S42,用户态将获取的所述硬件寄存器的物理基地址及寄存器空间的大小定义为宏,通过mmap函数将硬件寄存器的物理基地址映射为用户态虚拟地址。
5.根据权利要求1所述的方法,其特征在于,所述步骤S5进一步包括:
用户态执行ARM网口的初始化函数并加载驱动后,分配收发资源,通过控制寄存器的配置、接口注册及收发函数挂载,实现用户态收发报文。
6.一种ARM网口驱动的用户态移植***,其特征在于,所述***包括:
去除单元(1),用于去除内核态中ARM网口初始化函数;
移植单元(2),用于将所述去除单元(1)去除的ARM网口初始化函数中关于ARM网口驱动初始化及收发报文相关的函数移植到用户态;
内存获取单元(3),用于从内核态中获取大块连续内存,并对所述大块连续内存进行单独管理,使得用户态具有访问DMA内存权限;
硬件寄存器获取单元(4),用于通过用户态获取ARM网口硬件寄存器的物理基地址及寄存器空间大小,使得用户态具有读写ARM网口的硬件寄存器的权限;
执行单元(5),用于执行ARM网口的初始化函数进行ARM网口驱动加载,通过所述大块连续内存实现数据的存储和释放,收发报文。
7.根据权利要求6所述的***,其特征在于,所述移植单元(2)包括移植模块(21)、整改模块(22)和收包模块(23);其中,
所述移植模块(21)用于将与ARM网口驱动相关的函数移植到用户态;
所述整改模块(22)用于对用户态中植入的与ARM网口驱动相关的函数进行整改,去掉用户态不需要的操作函数;
所述收包模块(23)用于创建线程进行收包,并将整改后的所述函数编译链接生成可执行程序。
8.根据权利要求6所述的***,其特征在于,所述内存获取单元(3)包括内存申请模块(31)、内存地址获取模块(32)和内存地址映射模块(33);其中,
所述内存申请模块(31)用于内核态初始化时,利用大块内存申请补丁申请大块连续内存,以备用户态收发报文申请数据结构使用;
所述内存地址获取模块(32)用于通过管理函数ioctl方式从内核态获取已申请的所述大块连续内存的地址和大小;
所述内存地址映射模块(33)用于采用mmap函数将所述大块连续内存的地址映射为用户态可操作的虚拟地址。
9.根据权利要求6所述的***,其特征在于,所述硬件寄存器获取单元(4)包括硬件寄存器地址获取模块(41)和硬件寄存器地址映射模块(42);其中,
所述硬件寄存器地址获取模块(41)用于通过用户态获取ARM网口硬件寄存器的物理基地址及寄存器空间大小;
所述硬件寄存器地址映射模块(42)用于将获取的所述硬件寄存器的物理基地址及寄存器空间的大小定义为宏,通过mmap函数将硬件寄存器的物理基地址映射为用户态虚拟地址。
10.根据权利要求6所述的***,其特征在于,所述执行单元(5)进一步用于在用户态执行ARM网口的初始化函数并加载驱动后,分配收发资源,通过控制寄存器的配置、接口注册及收发函数挂载,实现用户态收发报文。
CN201410251940.8A 2014-06-09 2014-06-09 一种arm网口驱动的用户态移植方法和*** Pending CN104077190A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410251940.8A CN104077190A (zh) 2014-06-09 2014-06-09 一种arm网口驱动的用户态移植方法和***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410251940.8A CN104077190A (zh) 2014-06-09 2014-06-09 一种arm网口驱动的用户态移植方法和***

Publications (1)

Publication Number Publication Date
CN104077190A true CN104077190A (zh) 2014-10-01

Family

ID=51598460

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410251940.8A Pending CN104077190A (zh) 2014-06-09 2014-06-09 一种arm网口驱动的用户态移植方法和***

Country Status (1)

Country Link
CN (1) CN104077190A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106775930A (zh) * 2016-11-28 2017-05-31 中车株洲电力机车研究所有限公司 一种网口状态信息的获取方法及装置
CN110231988A (zh) * 2018-03-05 2019-09-13 龙芯中科技术有限公司 显存访问方法、装置及存储介质
CN110855610A (zh) * 2019-09-30 2020-02-28 视联动力信息技术股份有限公司 一种数据包的处理方法、装置及存储介质
CN115473811A (zh) * 2022-09-21 2022-12-13 西安超越申泰信息科技有限公司 一种网络性能优化方法、装置、设备及介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1866202A (zh) * 2005-05-18 2006-11-22 大唐移动通信设备有限公司 嵌入式设备的驱动方法
CN102111321A (zh) * 2011-03-01 2011-06-29 汉柏科技有限公司 一种用于vpn的加解密芯片驱动方法
CN102200930A (zh) * 2011-05-26 2011-09-28 华为数字技术有限公司 同步变量映射方法及装置、同步变量释放方法及同步变量删除方法
CN102662910A (zh) * 2012-03-23 2012-09-12 浙江大学 基于嵌入式***的网络交互体系及网络交互方法
CN103269284A (zh) * 2013-05-17 2013-08-28 汉柏科技有限公司 实时网络数据的捕获方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1866202A (zh) * 2005-05-18 2006-11-22 大唐移动通信设备有限公司 嵌入式设备的驱动方法
CN102111321A (zh) * 2011-03-01 2011-06-29 汉柏科技有限公司 一种用于vpn的加解密芯片驱动方法
CN102200930A (zh) * 2011-05-26 2011-09-28 华为数字技术有限公司 同步变量映射方法及装置、同步变量释放方法及同步变量删除方法
CN102662910A (zh) * 2012-03-23 2012-09-12 浙江大学 基于嵌入式***的网络交互体系及网络交互方法
CN103269284A (zh) * 2013-05-17 2013-08-28 汉柏科技有限公司 实时网络数据的捕获方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
刘军卫等: "用户态驱动框架的研究与实现", 《计算机***应用》 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106775930A (zh) * 2016-11-28 2017-05-31 中车株洲电力机车研究所有限公司 一种网口状态信息的获取方法及装置
CN110231988A (zh) * 2018-03-05 2019-09-13 龙芯中科技术有限公司 显存访问方法、装置及存储介质
CN110231988B (zh) * 2018-03-05 2021-08-03 龙芯中科技术股份有限公司 显存访问方法、装置及存储介质
CN110855610A (zh) * 2019-09-30 2020-02-28 视联动力信息技术股份有限公司 一种数据包的处理方法、装置及存储介质
CN115473811A (zh) * 2022-09-21 2022-12-13 西安超越申泰信息科技有限公司 一种网络性能优化方法、装置、设备及介质

Similar Documents

Publication Publication Date Title
US9384007B2 (en) Memory virtualization-based snapshot boot apparatus and method
US9299121B2 (en) Preemptive context switching
US8544012B2 (en) Changing a scheduler in a virtual machine monitor
CN107209683B (zh) 备份映像恢复
US9507632B2 (en) Preemptive context switching of processes on ac accelerated processing device (APD) based on time quanta
US10558584B2 (en) Employing intermediary structures for facilitating access to secure memory
KR20120098838A (ko) 가상화 환경에서 i/o 동작을 처리하는 방법 및 장치
US9417973B2 (en) Apparatus and method for fault recovery
CN104077190A (zh) 一种arm网口驱动的用户态移植方法和***
CN107526616B (zh) 一种主机对bmc进行数据写入和读取的方法及装置
US20120200579A1 (en) Process Device Context Switching
CN104050101A (zh) 一种实现arm cpu用户态收发报文的方法
WO2014004192A1 (en) Performing emulated message signaled interrupt handling
US9621633B2 (en) Flow director-based low latency networking
US9122522B2 (en) Software mechanisms for managing task scheduling on an accelerated processing device (APD)
US20130145202A1 (en) Handling Virtual-to-Physical Address Translation Failures
CN103150190A (zh) Linux***下用户态网卡自动探测及驱动加载的方法
US20120180056A1 (en) Heterogeneous Enqueuinig and Dequeuing Mechanism for Task Scheduling
US20130073779A1 (en) Dynamic memory reconfiguration to delay performance overhead
CN109062671A (zh) 一种轻量级的高性能互连网络软件虚拟化方法
US10255104B2 (en) System call queue between visible and invisible computing devices
US10481811B2 (en) Asynchronous copying of data within memory
US9720597B2 (en) Systems and methods for swapping pinned memory buffers
CN113268356B (zh) 基于LINUX***的多GPU板卡bounding的***、方法及介质
US20130160019A1 (en) Method for Resuming an APD Wavefront in Which a Subset of Elements Have Faulted

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
RJ01 Rejection of invention patent application after publication

Application publication date: 20141001