[发明专利]一种嵌入式系统内存零拷贝的方法及装置有效
申请号: | 202010606120.1 | 申请日: | 2020-06-30 |
公开(公告)号: | CN111800353B | 公开(公告)日: | 2022-04-12 |
发明(设计)人: | 许井泉;黄永佳;周进 | 申请(专利权)人: | 翱捷科技股份有限公司 |
主分类号: | H04L49/901 | 分类号: | H04L49/901;G06F9/50 |
代理公司: | 上海双霆知识产权代理事务所(普通合伙) 31415 | 代理人: | 殷晓雪 |
地址: | 201203 上海市浦东新区中国*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 嵌入式 系统 内存 拷贝 方法 装置 | ||
1.一种嵌入式系统内存零拷贝的方法,其特征是,包括如下步骤;
步骤S10:嵌入式系统中采用统一数据块格式,包括标准头部、扩展头部和预留空间;标准头部包括以太网头部、IP头部、TCP或UDP头部;扩展头部用来替换嵌入式系统的不同接口采用的协议的头部;预留空间预留给内存分配和释放字段即mem_msg字段;
步骤S20:模块A按照统一数据块格式为数据Z分配内存,并根据内存分配情况配置mem_msg字段的数据结构,其中包括指向内存释放函数的指针和指向内存释放地址的指针;然后把mem_msg字段写入所述预留空间;同时根据数据Z包含哪些头部在统一数据块格式的对应头部位置写入数据Z;
步骤S30:模块A扩展轻量IP协议栈中用来组织TCP/IP数据包的pbuf数据结构,在pbuf数据结构中增加指向以太网头部的pkt_mac指针以及指向mem_msg字段的pkt_msg指针;
步骤S40:模块A基于扩展后的pbuf数据结构处理数据Z,将数据Z挂载到pbuf数据结构的payload字段;还在pbuf释放函数中增加pkt_msg指针所指向的mem_msg字段中的释放函数指针;
步骤S50:对于转发到模块B的数据Z,模块B读取mem_msg字段,调用其中的释放函数指针所指向的内存释放函数来释放数据Z占用的内存。
2.根据权利要求1所述的嵌入式系统内存零拷贝的方法,其特征是,所述步骤S10中,所述统一数据块格式自前向后依次包括扩展头部、以太网头部、IP头部、TCP或UDP头部、净荷。
3.根据权利要求1所述的嵌入式系统内存零拷贝的方法,其特征是,所述步骤S10中,所述扩展头部的长度大于或等于嵌入式系统的不同接口采用的协议的头部长度中的最大长度。
4.根据权利要求1所述的嵌入式系统内存零拷贝的方法,其特征是,所述步骤S10中,所述嵌入式系统的不同接口采用的协议包括RNDIS协议、WiFi协议、ECM协议的任意一种或多种。
5.根据权利要求1所述的嵌入式系统内存零拷贝的方法,其特征是,所述步骤S20中,所述mem_msg字段的数据结构中包括:
释放函数指针free,用来指向内存释放函数;
数据块头部指针mem_hdr,用来指向内存分配的首地址,也就是指向内存释放的首地址;
数据块长度men_len,用来记录了每个统一数据块的长度。
6.根据权利要求1所述的嵌入式系统内存零拷贝的方法,其特征是,所述步骤S20中,如果数据Z是IP数据包,则从统一数据块格式的IP头部位置开始写入数据Z;
如果数据Z是以太网数据包,则从统一数据块格式的以太网头部位置开始写入数据Z;
如果数据Z是不同协议的接口的数据块,则从统一数据块格式的扩展头部位置开始写入数据Z。
7.根据权利要求1所述的嵌入式系统内存零拷贝的方法,其特征是,所述步骤S20中,所述mem_msg字段的大小固定。
8.根据权利要求1所述的嵌入式系统内存零拷贝的方法,其特征是,所述步骤S40中,修改后的pbuf释放函数执行后,不仅用来释放扩展后的pbuf数据结构,还同时执行释放函数指针所指向的内存释放函数而实现数据Z的内存空间的释放。
9.根据权利要求1所述的嵌入式系统内存零拷贝的方法,其特征是,所述步骤S40中,如果扩展后的pbuf数据结构中的pkt_msg指针未设置内容,那么执行修改后的pbuf释放函数只用来释放扩展后的pbuf数据结构;
如果扩展后的pbuf数据结构中的pkt_msg变量已设置内容,那么执行修改后的pbuf释放函数就在释放扩展后的pbuf数据结构的同时,还释放数据Z所分配的内存空间。
10.一种嵌入式系统内存零拷贝的装置,其特征是,包括接口模块数据块构建单元、接口模块内存分配单元、扩展单元、TCP/IP协议栈处理单元和接口模块内存释放单元;
所述接口模块数据块构建单元用来构建统一数据块格式;所述统一数据块格式包括标准头部、扩展头部和预留空间;标准头部包括以太网头部、IP头部、TCP或UDP头部;扩展头部用来替换嵌入式系统的不同接口采用的协议的头部;预留空间预留给内存分配和释放字段即mem_msg字段;
所述接口模块内存分配单元用来按照统一数据块格式为数据Z分配内存,并根据内存分配情况配置mem_msg字段的数据结构,其中包括指向内存释放函数的指针和指向内存释放地址的指针;然后把mem_msg字段写入所述预留空间;所述接口模块内存分配还用来根据数据Z包含哪些头部在统一数据块格式的对应头部位置写入数据Z;
所述扩展单元用来扩展轻量IP协议栈中用来组织TCP/IP数据包的pbuf数据结构,在pbuf数据结构中增加指向以太网头部的pkt_mac指针以及指向mem_msg字段的pkt_msg指针;
所述TCP/IP协议栈处理单元用来基于扩展后的pbuf数据结构处理数据Z,将数据Z挂载到pbuf数据结构的payload字段;还在pbuf释放函数中增加pkt_msg指针所指向的mem_msg字段中的释放函数指针;
所述接口模块内存释放单元用来对于由所述TCP/IP协议栈处理单元转发到其他模块的数据Z,读取数据Z的统一数据块格式中的mem_msg字段,调用其中的释放函数指针所指向的内存释放函数来释放数据Z占用的内存。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于翱捷科技股份有限公司,未经翱捷科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010606120.1/1.html,转载请声明来源钻瓜专利网。