具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。
需要说明的是,本实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
本发明提供一种堆叠交换机报文传输方法。在一个实施例中,如图1所示,所述堆叠交换机报文传输方法包括:
步骤S1,分配一个连续的内存地址空间,并使得所述内存地址空间为用户层与系统层共用存取。在一个实施例中,所述用户层与系统层通过一个数据结构共用存取所述内存地址空间。具体地,所述数据结构包括为系统层指示报文数据位置信息的成员以及为用户层指示报文数据位置信息的成员,通过所述为系统层指示报文数据位置信息的成员以及为用户层指示报文数据位置信息的成员在用户层与系统层传递报文位置信息。在一个实施例中,所述内存地址空间长度为2048字节。
在一个实施例中,所述数据结构包括以下数据结构:
其中,M_BLK_ID代表一段大小为m_len,起始地址为m_data的内存空间。系统层可以根据net_dmabuf的成员pMblk找到M_BLK_ID代表的一段大小为m_len,起始地址为m_data的内存空间。user_dmabuf定义如下,pData指向用户数据,其长度为len。在zero_copy_dmabuf中,根据zero_copy_dmabuf的net_buf成员,网卡驱动可以找到要发送的报文在内存的地址或者接收到数据存储在内存那个位置;根据zero_copy_dmabuf的user_buf成员,应用层可以找到网卡接收到的报文在内存的位置以及发送数据时应该往何处填发送数据。一个zero_copy_dmabuf结构对应一个net_buf结构、一个user_buf结构以及一段唯一的内存空间。分配一个zero_copy_dmabuf结构,涉及分配net_buf结构、user_buf结构和唯一的内存空间,同理释放一个zero_copy_dmabuf结构需要释放内存空间以及net_buf结构和user_buf结构。
在一个实施例中,所述方法还包括对所述数据结构的管理,即包括对zero_copy_dmabuf的分配和释放。其中zero_copy_dmabuf_alloc分配包括:1,调用VxWorks提供的系统接口申请大小为2048的内存空间pData存放传输数据。2,调用VxWorks提供的系统接口申请M_BLK_ID。3,对M_BLK_ID赋值:M_BLK_ID->m_data=pData;M_BLK_ID->m_len=len。4,调用VxWorks提供的系统接口申请pnet_buf结构、puser_buf结构以及pzero_copy_dmabuf结构并赋值:
pzero_copy_dmabuf->net_buf=pnet_buf
pzero_copy_dmabuf->net_buf_alloc=net_buf_alloc
pzero_copy_dmabuf->net_buf_alloc=net_buf_free
pzero_copy_dmabuf->user_buf=puser_buf
pzero_copy_dmabuf->user_buf_alloc=user_buf_alloc
pzero_copy_dmabuf->user_buf_alloc=user_buf_free
最后返回pzero_copy_dmabuf给申请者。
对zero_copy_dmabuf_free释放包括:调用VxWorks提供的系统接口释放M_BLK_ID、pnet_buf结构、puser_buf结构以及pzero_copy_dmabuf结构。
步骤S2,发送报文时,用户层将所述报文数据拷贝到所述内存地址空间中,系统层所述报文在所述内存地址空间的位置信息并通知网卡硬件根据所述报文在所述内存地址空间的位置信息发送报文。在一个实施例中,所述操作系统为VxWorks,在通过zero_copy_dmabuf_alloc申请一个zero_copy_dmabuf结构后,其中,一个zero_copy_dmabuf结构对应一个pnet_buf结构、一个puser_buf结构以及一段大小为2048的M_BLK_ID内存空间。应用层把要发送的数据填充到M_BLK_ID内存空间中,告诉系统Mux层有数据包要发送出去。系统Mux层不复制数据,只是将pnet_buf结构的相关指针指向puser_buf结构,通知网卡准备发送数据。网卡驱动根据pnet_buf结构的相关指针找到M_BLK_ID内存,把M_BLK_ID内存地址写入网卡相关寄存器,启动DMA传输,把此数据包发送出去。发送完成后可以通过接口zero_copy_dmabuf_free释放zero_copy_dmabuf结构以及与此结构相关的pnet_buf结构、puser_buf结构、M_BLK_ID内存,也可以保留待下一次使用。
在一个实施例中,如图2所示,所述堆叠交换机报文传输方法包括:
步骤S1,分配一个连续的内存地址空间,并使得所述内存地址空间为用户层与系统层共用存取。在一个实施例中,所述用户层与系统层通过一个数据结构共用存取所述内存地址空间。具体地,所述数据结构包括为系统层指示报文数据位置信息的成员以及为用户层指示报文数据位置信息的成员,通过所述为系统层指示报文数据位置信息的成员以及为用户层指示报文数据位置信息的成员在用户层与系统层传递报文位置信息。在一个实施例中,所述内存地址空间长度为2048字节。
在一个实施例中,所述数据结构包括以下数据结构:
其中,M_BLK_ID代表一段大小为m_len,起始地址为m_data的内存空间。系统层可以根据net_dmabuf的成员pMblk找到M_BLK_ID代表的一段大小为m_len,起始地址为m_data的内存空间。user_dmabuf定义如下,pData指向用户数据,其长度为len。在zero_copy_dmabuf中,根据zero_copy_dmabuf的net_buf成员,网卡驱动可以找到要发送的报文在内存的地址或者接收到数据存储在内存那个位置;根据zero_copy_dmabuf的user_buf成员,应用层可以找到网卡接收到的报文在内存的位置以及发送数据时应该往何处填发送数据。一个zero_copy_dmabuf结构对应一个net_buf结构、一个user_buf结构以及一段唯一的内存空间。分配一个zero_copy_dmabuf结构,涉及分配net_buf结构、user_buf结构和唯一的内存空间,同理释放一个zero_copy_dmabuf结构需要释放内存空间以及net_buf结构和user_buf结构。
在一个实施例中,所述方法还包括对所述数据结构的管理,即包括对zero_copy_dmabuf的分配和释放。其中zero_copy_dmabuf_alloc分配包括:1,调用VxWorks提供的系统接口申请大小为2048的内存空间pData存放传输数据。2,调用VxWorks提供的系统接口申请M_BLK_ID。3,对M_BLK_ID赋值:M_BLK_ID->m_data=pData;M_BLK_ID->m_len=len。4,调用VxWorks提供的系统接口申请pnet_buf结构、puser_buf结构以及pzero_copy_dmabuf结构并赋值:
pzero_copy_dmabuf->net_buf=pnet_buf
pzero_copy_dmabuf->net_buf_alloc=net_buf_alloc
pzero_copy_dmabuf->net_buf_alloc=net_buf_free
pzero_copy_dmabuf->user_buf=puser_buf
pzero_copy_dmabuf->user_buf_alloc=user_buf_alloc
pzero_copy_dmabuf->user_buf_alloc=user_buf_free
最后返回pzero_copy_dmabuf给申请者。
对zero_copy_dmabuf_free释放包括:调用VxWorks提供的系统接口释放M_BLK_ID、pnet_buf结构、puser_buf结构以及pzero_copy_dmabuf结构。
步骤S3,接收报文时,系统层将所述报文数据接收到所述内存地址空间,用户层获取所接收报文在所述内存地址空间中的位置信息并根据所述位置信息在所述内存地址空间中读取报文数据。在一个实施例中,所述操作系统为VxWorks,在通过接口zero_copy_dmabuf_alloc申请一定数目的zero_copy_dmabuf结构后,其中,每一个zero_copy_dmabuf结构对应一个pnet_buf结构、一个puser_buf结构以及M_BLK_ID结构代表的一段大小为2048的内存空间,这段内存空间用来存储一个网卡接收数据包。当接收到数据报文时,通过写相关硬件寄存器告诉网卡启动DMA传输把数据包收到zero_copy_dmabuf结构指向的M_BLK_ID内存中。系统Mux层不复制数据,只是告诉应用层网卡以及收到一个数据包以及代表此数据包的zero_copy_dmabuf结构在内存的位置。应用层根据系统Mux层提供的zero_copy_dmabuf结构在内存的位置,可以找到一段大小为2048的内存空间,这段内存空间存放有网卡收到的一个数据包。应用层读取此数据包进行相关处理,数据包处理完成后,应用层可以通过接口zero_copy_dmabuf_free释放zero_copy_dmabuf结构以及与此结构相关的pnet_buf结构、puser_buf结构、M_BLK_ID内存,也可以保留待下一次使用。
在一个实施例中,如图3所示,所述堆叠交换机报文传输方法包括:
步骤S1,分配一个连续的内存地址空间,并使得所述内存地址空间为用户层与系统层共用存取。在一个实施例中,所述用户层与系统层通过一个数据结构共用存取所述内存地址空间。具体地,所述数据结构包括为系统层指示报文数据位置信息的成员以及为用户层指示报文数据位置信息的成员,通过所述为系统层指示报文数据位置信息的成员以及为用户层指示报文数据位置信息的成员在用户层与系统层传递报文位置信息。在一个实施例中,所述内存地址空间长度为2048字节。
步骤S2,发送报文时,用户层将所述报文数据拷贝到所述内存地址空间中,系统层所述报文在所述内存地址空间的位置信息并通知网卡硬件根据所述报文在所述内存地址空间的位置信息发送报文。在一个实施例中,所述操作系统为VxWorks,在通过zero_copy_dmabuf_alloc申请一个zero_copy_dmabuf结构后,其中,一个zero_copy_dmabuf结构对应一个pnet_buf结构、一个puser_buf结构以及一段大小为2048的M_BLK_ID内存空间。应用层把要发送的数据填充到M_BLK_ID内存空间中,告诉系统Mux层有数据包要发送出去。系统Mux层不复制数据,只是将pnet_buf结构的相关指针指向puser_buf结构,通知网卡准备发送数据。网卡驱动根据pnet_buf结构的相关指针找到M_BLK_ID内存,把M_BLK_ID内存地址写入网卡相关寄存器,启动DMA传输,把此数据包发送出去。发送完成后可以通过接口zero_copy_dmabuf_free释放zero_copy_dmabuf结构以及与此结构相关的pnet_buf结构、puser_buf结构、M_BLK_ID内存,也可以保留待下一次使用。
步骤S3,接收报文时,系统层将所述报文数据接收到所述内存地址空间,用户层获取所接收报文在所述内存地址空间中的位置信息并根据所述位置信息在所述内存地址空间中读取报文数据。在一个实施例中,所述操作系统为VxWorks,在通过接口zero_copy_dmabuf_alloc申请一定数目的zero_copy_dmabuf结构后,其中,每一个zero_copy_dmabuf结构对应一个pnet_buf结构、一个puser_buf结构以及M_BLK_ID结构代表的一段大小为2048的内存空间,这段内存空间用来存储一个网卡接收数据包。当接收到数据报文时,通过写相关硬件寄存器告诉网卡启动DMA传输把数据包收到zero_copy_dmabuf结构指向的M_BLK_ID内存中。系统Mux层不复制数据,只是告诉应用层网卡以及收到一个数据包以及代表此数据包的zero_copy_dmabuf结构在内存的位置。应用层根据系统Mux层提供的zero_copy_dmabuf结构在内存的位置,可以找到一段大小为2048的内存空间,这段内存空间存放有网卡收到的一个数据包。应用层读取此数据包进行相关处理,数据包处理完成后,应用层可以通过接口zero_copy_dmabuf_free释放zero_copy_dmabuf结构以及与此结构相关的pnet_buf结构、puser_buf结构、M_BLK_ID内存,也可以保留待下一次使用。
本发明还提供一种堆叠交换机报文传输系统,如图4所示,所述堆叠交换机报文传输系统1包括共用内存分配模块11、以及发送报文模块12。其中:
共用内存分配模块11用于分配一个连续的内存地址空间,并使得所述内存地址空间为用户层与系统层共用存取。在一个实施例中,所述用户层与系统层通过一个数据结构共用存取所述内存地址空间。具体地,所述数据结构包括为系统层指示报文数据位置信息的成员以及为用户层指示报文数据位置信息的成员,通过所述为系统层指示报文数据位置信息的成员以及为用户层指示报文数据位置信息的成员在用户层与系统层传递报文位置信息。在一个实施例中,所述内存地址空间长度为2048字节。
在一个实施例中,所述数据结构包括以下数据结构:
其中,M_BLK_ID代表一段大小为m_len,起始地址为m_data的内存空间。系统层可以根据net_dmabuf的成员pMblk找到M_BLK_ID代表的一段大小为m_len,起始地址为m_data的内存空间。user_dmabuf定义如下,pData指向用户数据,其长度为len。在zero_copy_dmabuf中,根据zero_copy_dmabuf的net_buf成员,网卡驱动可以找到要发送的报文在内存的地址或者接收到数据存储在内存那个位置;根据zero_copy_dmabuf的user_buf成员,应用层可以找到网卡接收到的报文在内存的位置以及发送数据时应该往何处填发送数据。一个zero_copy_dmabuf结构对应一个net_buf结构、一个user_buf结构以及一段唯一的内存空间。分配一个zero_copy_dmabuf结构,涉及分配net_buf结构、user_buf结构和唯一的内存空间,同理释放一个zero_copy_dmabuf结构需要释放内存空间以及net_buf结构和user_buf结构。
在一个实施例中,共用内存分配模块11还包括对所述数据结构的管理,即包括对zero_copy_dmabuf的分配和释放。其中zero_copy_dmabuf_alloc分配包括:1,调用VxWorks提供的系统接口申请大小为2048的内存空间pData存放传输数据。2,调用VxWorks提供的系统接口申请M_BLK_ID。3,对M_BLK_ID赋值:M_BLK_ID->m_data=pData;M_BLK_ID->m_len=len。4,调用VxWorks提供的系统接口申请pnet_buf结构、puser_buf结构以及pzero_copy_dmabuf结构并赋值:
pzero_copy_dmabuf->net_buf=pnet_buf
pzero_copy_dmabuf->net_buf_alloc=net_buf_alloc
pzero_copy_dmabuf->net_buf_alloc=net_buf_free
pzero_copy_dmabuf->user_buf=puser_buf
pzero_copy_dmabuf->user_buf_alloc=user_buf_alloc
pzero_copy_dmabuf->user_buf_alloc=user_buf_free
最后返回pzero_copy_dmabuf给申请者。
对zero_copy_dmabuf_free释放包括:调用VxWorks提供的系统接口释放M_BLK_ID、pnet_buf结构、puser_buf结构以及pzero_copy_dmabuf结构。
发送报文模块12与所述共用内存分配模块11相连,用于获取所述共用内存分配模块11的内存地址空间,在发送报文时,用户层将所述报文数据拷贝到所述内存地址空间中,系统层所述报文在所述内存地址空间的位置信息并通知网卡硬件根据所述报文在所述内存地址空间的位置信息发送报文。在一个实施例中,所述操作系统为VxWorks,在通过共用内存分配模块11中的zero_copy_dmabuf_alloc申请一个zero_copy_dmabuf结构后,其中,一个zero_copy_dmabuf结构对应一个pnet_buf结构、一个puser_buf结构以及一段大小为2048的M_BLK_ID内存空间。应用层把要发送的数据填充到M_BLK_ID内存空间中,告诉系统Mux层有数据包要发送出去。系统Mux层不复制数据,只是将pnet_buf结构的相关指针指向puser_buf结构,通知网卡准备发送数据。网卡驱动根据pnet_buf结构的相关指针找到M_BLK_ID内存,把M_BLK_ID内存地址写入网卡相关寄存器,启动DMA传输,把此数据包发送出去。发送完成后可以通过接口zero_copy_dmabuf_free释放zero_copy_dmabuf结构以及与此结构相关的pnet_buf结构、puser_buf结构、M_BLK_ID内存,也可以保留待下一次使用。
本发明还提供一种堆叠交换机报文传输系统,如图5所示,所述堆叠交换机报文传输系统1包括共用内存分配模块11、以及接收报文模块13。其中:
共用内存分配模块11用于分配一个连续的内存地址空间,并使得所述内存地址空间为用户层与系统层共用存取。在一个实施例中,所述用户层与系统层通过一个数据结构共用存取所述内存地址空间。具体地,所述数据结构包括为系统层指示报文数据位置信息的成员以及为用户层指示报文数据位置信息的成员,通过所述为系统层指示报文数据位置信息的成员以及为用户层指示报文数据位置信息的成员在用户层与系统层传递报文位置信息。在一个实施例中,所述内存地址空间长度为2048字节。
在一个实施例中,所述数据结构包括以下数据结构:
其中,M_BLK_ID代表一段大小为m_len,起始地址为m_data的内存空间。系统层可以根据net_dmabuf的成员pMblk找到M_BLK_ID代表的一段大小为m_len,起始地址为m_data的内存空间。user_dmabuf定义如下,pData指向用户数据,其长度为len。在zero_copy_dmabuf中,根据zero_copy_dmabuf的net_buf成员,网卡驱动可以找到要发送的报文在内存的地址或者接收到数据存储在内存那个位置;根据zero_copy_dmabuf的user_buf成员,应用层可以找到网卡接收到的报文在内存的位置以及发送数据时应该往何处填发送数据。一个zero_copy_dmabuf结构对应一个net_buf结构、一个user_buf结构以及一段唯一的内存空间。分配一个zero_copy_dmabuf结构,涉及分配net_buf结构、user_buf结构和唯一的内存空间,同理释放一个zero_copy_dmabuf结构需要释放内存空间以及net_buf结构和user_buf结构。
在一个实施例中,共用内存分配模块11还包括对所述数据结构的管理,即包括对zero_copy_dmabuf的分配和释放。其中zero_copy_dmabuf_alloc分配包括:1,调用VxWorks提供的系统接口申请大小为2048的内存空间pData存放传输数据。2,调用VxWorks提供的系统接口申请M_BLK_ID。3,对M_BLK_ID赋值:M_BLK_ID->m_data=pData;M_BLK_ID->m_len=len。4,调用VxWorks提供的系统接口申请pnet_buf结构、puser_buf结构以及pzero_copy_dmabuf结构并赋值:
pzero_copy_dmabuf->net_buf=pnet_buf
pzero_copy_dmabuf->net_buf_alloc=net_buf_alloc
pzero_copy_dmabuf->net_buf_alloc=net_buf_free
pzero_copy_dmabuf->user_buf=puser_buf
pzero_copy_dmabuf->user_buf_alloc=user_buf_alloc
pzero_copy_dmabuf->user_buf_alloc=user_buf_free
最后返回pzero_copy_dmabuf给申请者。
对zero_copy_dmabuf_free释放包括:调用VxWorks提供的系统接口释放M_BLK_ID、pnet_buf结构、puser_buf结构以及pzero_copy_dmabuf结构。
接收报文模块13与所述共用内存分配模块11相连,用于获取所述共用内存分配模块11的内存地址空间,接收报文时,系统层将所述报文数据接收到所述内存地址空间,用户层获取所接收报文在所述内存地址空间中的位置信息并根据所述位置信息在所述内存地址空间中读取报文数据。接收报文时,系统层将所述报文数据接收到所述内存地址空间,用户层获取所接收报文在所述内存地址空间中的位置信息并根据所述位置信息在所述内存地址空间中读取报文数据。在一个实施例中,所述操作系统为VxWorks,在通过所述共用内存分配模块11的接口zero_copy_dmabuf_alloc申请一定数目的zero_copy_dmabuf结构后,其中,每一个zero_copy_dmabuf结构对应一个pnet_buf结构、一个puser_buf结构以及M_BLK_ID结构代表的一段大小为2048的内存空间,这段内存空间用来存储一个网卡接收数据包。当接收到数据报文时,通过写相关硬件寄存器告诉网卡启动DMA传输把数据包收到zero_copy_dmabuf结构指向的M_BLK_ID内存中。系统Mux层不复制数据,只是告诉应用层网卡以及收到一个数据包以及代表此数据包的zero_copy_dmabuf结构在内存的位置。应用层根据系统Mux层提供的zero_copy_dmabuf结构在内存的位置,可以找到一段大小为2048的内存空间,这段内存空间存放有网卡收到的一个数据包。应用层读取此数据包进行相关处理,数据包处理完成后,应用层可以通过接口zero_copy_dmabuf_free释放zero_copy_dmabuf结构以及与此结构相关的pnet_buf结构、puser_buf结构、M_BLK_ID内存,也可以保留待下一次使用。
本发明还提供一种堆叠交换机报文传输系统,如图6所示,所述堆叠交换机报文传输系统1包括共用内存分配模块11、发送报文模块12以及接收报文模块13。其中:
共用内存分配模块11用于分配一个连续的内存地址空间,并使得所述内存地址空间为用户层与系统层共用存取。在一个实施例中,所述用户层与系统层通过一个数据结构共用存取所述内存地址空间。具体地,所述数据结构包括为系统层指示报文数据位置信息的成员以及为用户层指示报文数据位置信息的成员,通过所述为系统层指示报文数据位置信息的成员以及为用户层指示报文数据位置信息的成员在用户层与系统层传递报文位置信息。在一个实施例中,所述内存地址空间长度为2048字节。
发送报文模块12与所述共用内存分配模块11相连,用于获取所述共用内存分配模块11的内存地址空间,在发送报文时,用户层将所述报文数据拷贝到所述内存地址空间中,系统层所述报文在所述内存地址空间的位置信息并通知网卡硬件根据所述报文在所述内存地址空间的位置信息发送报文。在一个实施例中,所述操作系统为VxWorks,在通过共用内存分配模块11中的zero_copy_dmabuf_alloc申请一个zero_copy_dmabuf结构后,其中,一个zero_copy_dmabuf结构对应一个pnet_buf结构、一个puser_buf结构以及一段大小为2048的M_BLK_ID内存空间。应用层把要发送的数据填充到M_BLK_ID内存空间中,告诉系统Mux层有数据包要发送出去。系统Mux层不复制数据,只是将pnet_buf结构的相关指针指向puser_buf结构,通知网卡准备发送数据。网卡驱动根据pnet_buf结构的相关指针找到M_BLK_ID内存,把M_BLK_ID内存地址写入网卡相关寄存器,启动DMA传输,把此数据包发送出去。发送完成后可以通过接口zero_copy_dmabuf_free释放zero_copy_dmabuf结构以及与此结构相关的pnet_buf结构、puser_buf结构、M_BLK_ID内存,也可以保留待下一次使用。
接收报文模块13与所述共用内存分配模块11相连,用于获取所述共用内存分配模块11的内存地址空间,接收报文时,系统层将所述报文数据接收到所述内存地址空间,用户层获取所接收报文在所述内存地址空间中的位置信息并根据所述位置信息在所述内存地址空间中读取报文数据。接收报文时,系统层将所述报文数据接收到所述内存地址空间,用户层获取所接收报文在所述内存地址空间中的位置信息并根据所述位置信息在所述内存地址空间中读取报文数据。在一个实施例中,所述操作系统为VxWorks,在通过所述共用内存分配模块11的接口zero_copy_dmabuf_alloc申请一定数目的zero_copy_dmabuf结构后,其中,每一个zero_copy_dmabuf结构对应一个pnet_buf结构、一个puser_buf结构以及M_BLK_ID结构代表的一段大小为2048的内存空间,这段内存空间用来存储一个网卡接收数据包。当接收到数据报文时,通过写相关硬件寄存器告诉网卡启动DMA传输把数据包收到zero_copy_dmabuf结构指向的M_BLK_ID内存中。系统Mux层不复制数据,只是告诉应用层网卡以及收到一个数据包以及代表此数据包的zero_copy_dmabuf结构在内存的位置。应用层根据系统Mux层提供的zero_copy_dmabuf结构在内存的位置,可以找到一段大小为2048的内存空间,这段内存空间存放有网卡收到的一个数据包。应用层读取此数据包进行相关处理,数据包处理完成后,应用层可以通过接口zero_copy_dmabuf_free释放zero_copy_dmabuf结构以及与此结构相关的pnet_buf结构、puser_buf结构、M_BLK_ID内存,也可以保留待下一次使用。
一种堆叠交换机,所述堆叠交换机包括以上所述的堆叠交换机报文传输系统。在一个实施例中,所述堆叠交换机使用的是VxWorks操作系统。
综上所述,本发明的一种堆叠交换机报文传输方法、系统及堆叠交换机,具有以下有益效果:确保基于VxWorks堆叠交换机网卡报文收发过程中不需要额外进行数据拷贝。具体地,当应用层发送数据时,数据不需要从用户缓存拷贝数据到DMA缓存,发包效率高,节省CPU资源。当网卡收到数据时,数据也不需要从DMA缓存拷贝到用户缓存,收包效率高,节省CPU资源。解决VxWorks下堆叠交换机系统大量传输长度为1518的报文时网卡收发过程中需要额外拷贝数据导致收发数据包效率低、消耗宝贵的CPU资源的问题。。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。