和内存管理以及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发送缓冲区大小 // 只是设定大小,并不实际分配内存 // 如果你的程序需要发送大量零拷贝数据 // 可以将这个值设大一些 #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包(包括下层协议头) #ifndef PBUF_POOL_BUFSIZE #define PBUF_POOL_BUFSIZE LWIP_MEM_ALIGN_SIZE(TCP_MSS+40+PBUF_LINK_HLEN) #endif