修改默认选项时,不要修改opt.h文件,通过lwipopts.h修改。
和内存管理以及TCP发送性能相关的选项
// 为1时使用系统库malloc/free进行内存管理#ifndef MEM_LIBC_MALLOC#define MEM_LIBC_MALLOC 0#endif
[url=][/url]
// 使用mem_malloc/mem_free替代pool内存池管理// lwip支持使用内存池来管理一些需要经常分配/释放的数据结构// 例如pcb// 将下面选项置1禁用该特性// 一般和MEM_LIBC_MALLOC选项一道使用// 使得所有内存分配都通过系统库进行#ifndef MEMP_MEM_MALLOC#define MEMP_MEM_MALLOC 0#endif
[url=][/url]
// 使用内存池而不是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
[url=][/url]
// TCP发送缓冲区大小// 只是设定大小,并不实际分配内存// 如果你的程序需要发送大量零拷贝数据// 将这个值设大一些
// 不应小于单次调用tcp_write时可能发送的最大数据量#ifndef TCP_SND_BUF#define TCP_SND_BUF (2 * TCP_MSS)#endif[url=][/url]
[url=][/url]
// MEM_SIZE是一般意义上的动态内存大小// 如果程序需要进行较大量的拷贝数据发送// 则需要较大数量的该内存// 因为所有的拷贝发送数据都需要复制到// 这种“一般意义”的动态内存中
// PBUF_RAM类型的PBUF即从中分配#ifndef MEM_SIZE#define MEM_SIZE 1600#endif[url=][/url]
// PBUF内存池中的每个PBUF大小// 默认值是能放下一个完整的TCP包(包括下层协议头)
// 如果你能确定很少接收全长TCP包,可以使用小一点的值#ifndef PBUF_POOL_BUFSIZE#define PBUF_POOL_BUFSIZE LWIP_MEM_ALIGN_SIZE(TCP_MSS+40+PBUF_LINK_HLEN)#endif
// 在单个pcb中排队的待发pbuf数量上限
// 不应小于 (2 * TCP_SND_BUF/TCP_MSS)#ifndef TCP_SND_QUEUELEN#define TCP_SND_QUEUELEN ((4 * (TCP_SND_BUF) + (TCP_MSS - 1))/(TCP_MSS))#endif
[url=][/url]
// App层发送的超过MSS大小的数据量会被拆分为SEG// 每个SEG内数据量不超过MSS// 每个SEG可能拥有多个pbuf
// 不小于TCP_SND_QUEUELEN#ifndef MEMP_NUM_TCP_SEG#define MEMP_NUM_TCP_SEG 16#endif |