lwip编译选项

修改默认选项时,不要修改opt.h文件,通过lwipopts.h修改。

和内存管理以及TCP发送性能相关的选项

// 为1时使用系统库malloc/free进行内存管理
#ifndef MEM_LIBC_MALLOC
#define MEM_LIBC_MALLOC 0
#endif
复制代码
// 使用mem_malloc/mem_free替代pool内存池管理
// lwip支持使用内存池来管理一些需要经常分配/释放的数据结构
// 例如pcb
// 将下面选项置1禁用该特性
// 一般和MEM_LIBC_MALLOC选项一道使用
// 使得所有内存分配都通过系统库进行
#ifndef MEMP_MEM_MALLOC
#define MEMP_MEM_MALLOC 0
#endif
复制代码
// 使用内存池而不是malloc来分配一般性内存
// 此选项需要和MEMP_USE_CUSTOM_POOLS一起使用
#ifndef MEM_USE_POOLS
#define MEM_USE_POOLS 0
#endif
// 用于PBUF_ROM和PBUF_REF的pbuf结构数量
// 如果程序主要使用零拷贝方式发送大量数据
// 需要较大数量的该结构
#ifndef MEMP_NUM_PBUF
#define MEMP_NUM_PBUF 16
#endif
// PBUF内存池(PBUF_POOL类型的PBUF)中的PBUF数量
#ifndef PBUF_POOL_SIZE
#define PBUF_POOL_SIZE 16
#endif
复制代码
// TCP发送缓冲区大小(已发出但还未收到ACK的最大允许数据量)
// 只是设定大小,并不实际分配内存
// 如果你的程序需要发送大量零拷贝数据
// 可以将这个值设大一些
// (因为零拷贝数据“总是在那里”,不占LwIP动态内存)
// 最小不应小于单次调用tcp_write时可能发送的最大数据量

// 调用tcp_write时的参数len若大于tpcb->snd_buf将导致返回ERR_MEM
// (在LwIP代码中,每成功执行一次tcp_write相应减小tpcb->snd_buf,
// 每收到一次ACK相应增加tpcb->snd_buf)
// 考虑到一般系统“隔一个确认”的原则,
// 一般设置为TCP_MSS的2倍或更大的值。
#ifndef TCP_SND_BUF #define TCP_SND_BUF (2 * TCP_MSS) #endif
复制代码
复制代码
// MEM_SIZE是一般意义上的动态内存大小
// 如果程序需要进行较大量的拷贝数据发送
// 则需要较大数量的该内存
// 因为所有的拷贝发送数据都需要复制到
// 这种“一般意义”的动态内存中
// PBUF_RAM类型的PBUF即从中分配
#ifndef MEM_SIZE #define MEM_SIZE 1600 #endif
复制代码
// PBUF内存池中的每个PBUF大小
// 默认值是能放下一个完整的TCP包(包括下层协议头)
// 如果你能确定很少接收全长TCP包,可以使用小一点的值
#ifndef PBUF_POOL_BUFSIZE #define PBUF_POOL_BUFSIZE LWIP_MEM_ALIGN_SIZE(TCP_MSS+40+PBUF_LINK_HLEN+4/*VLAN_TAG*/+4/*CRC*/) #endif 
复制代码
// 在单个pcb中排队的待发pbuf数量上限
// 不应小于 (2 * TCP_SND_BUF/TCP_MSS)
// 考虑以下几点:
// 1. 对于REF/ROM类型的数据,协议头和协议数据是分开存放的,因此每段数据需要两个PBUF
// 2. LwIP可能会将多次tcp_write中的待发数据合并到一起
// (如果每次tcp_write数据量都较小)
// 3. 需要Copy发送的数据,协议头和数据在单一PBUF里面
// 一般用默认值即可
#ifndef TCP_SND_QUEUELEN #define TCP_SND_QUEUELEN ((4 * (TCP_SND_BUF) + (TCP_MSS - 1))/(TCP_MSS)) #endif
复制代码
复制代码
// App层发送的超过MSS大小的数据量会被拆分为SEG
// 每个SEG内数据量不超过MSS
// 每个SEG可能拥有多个pbuf
// 不小于TCP_SND_QUEUELEN #ifndef MEMP_NUM_TCP_SEG #define MEMP_NUM_TCP_SEG 16 #endif
复制代码

 

分类: LwIP
0
0
« 上一篇: LwIP:处理链路状态改变
» 下一篇: pbuf类型和应用
posted on 2014-01-18 20:21 告别年代 阅读( 2455) 评论( 0) 编辑 收藏
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值