1,LWIP_MEMPOOL 宏定义指向 MEMP_##name(##为 C 语言中的连接符) 2,通过#include "lwip/priv/memp_std.h"文件来启用所需的内存池类型 iv.memp.c 文件 在memp.h当中,我们有提到:LWIP_MEMPOOL 指向 LWIP_MEMPOOL_DECLARE 宏定义,而在memp.c 文件当中的const memp_pools[MEMP _MAX]数组则用于管理各类内存...
继续来看宏LWIP_MEMPOOL_DECLARE_STATS_INSTANCE和LWIP_MEMPOOL_DECLARE_STATS_REFERENCE,memp_priv.h中 如果定义了宏MEMP_STATS即使能统计信息,则LWIP_MEMPOOL_DECLARE_STATS_INSTANCE定义了结构体变量static struct stats_mem name; LWIP_MEMPOOL_DECLARE_STATS_REFERENCE即&name,该变量地址 否则都是空 #if MEMP_STATS ...
先说第一个,继续追LWIP_MEMPOOL_DECLARE的定义如下,看完继续懵逼中。。。,但是不能慌一个个宏替换出来 #defineLWIP_MEMPOOL_DECLARE(name,num,size,desc) \LWIP_DECLARE_MEMORY_ALIGNED(memp_memory_ ## name ## _base, ((num)* (MEMP_SIZE +MEMP_ALIGN_SIZE(size))); \ \ LWIP_MEMPOOL_DECLARE_STATS_...
先说第一个,继续追LWIP_MEMPOOL_DECLARE的定义如下,看完继续懵逼中。。。,但是不能慌一个个宏替换出来 #defineLWIP_MEMPOOL_DECLARE(name,num,size,desc) \LWIP_DECLARE_MEMORY_ALIGNED(memp_memory_ ## name ## _base, ((num)* (MEMP_SIZE +MEMP_ALIGN_SIZE(size))); \ \ LWIP_MEMPOOL_DECLARE_STATS_...
[]; /* Variable Definitions */ LWIP_MEMPOOL_DECLARE(RX_POOL, ETH_RX_BUFFER_CNT, sizeof(RxBuff_t), "Zero-copy RX PBUF pool"); static uint8_t RxAllocStatus; /* Global Ethernet handle*/ ETH_HandleTypeDef EthHandle; ETH_TxPacketConfig TxConfig; /* Private function prototypes ---*/ u...
同理该结构体也记录了每种POOL的其他参数,如内存块的个数num,比如MEMP_NUM_RAW_PCB,这些就是用户配置的宏定义,都会被记录在里面,还有每种POOL的描述“DECLARE_LWIP_MEMPOOL_DESC(“RAW_PCB”)”,当然这个参数可用可不用,这只是一个字符串,在输出信息的时候用到。 除了这些信息,还有一个最重要的信息,那就是...
#pragmalocation=0x30000000ETH_DMADescTypeDefDMARxDscrTab[ETH_RX_DESC_CNT];/* Ethernet Rx DMA Descriptors */#pragmalocation=0x30000200ETH_DMADescTypeDefDMATxDscrTab[ETH_TX_DESC_CNT];/* Ethernet Tx DMA Descriptors *//* Memory Pool Declaration */LWIP_MEMPOOL_DECLARE(RX_POOL,ETH_RX_BUFFER_CNT,...
1 #define LWIP_MEMPOOL(name,num,size,desc) LWIP_MEMPOOL_DECLARE(name,num,size,desc) 2 #include "lwip/priv/memp_std.h" 经过包含memp_std.h文件后,再经过编译器的处理,就能得到下面的结果,具体见代码清单5-5中的加粗部分。其实这些编译器处理的代码我们并不需要怎么理会,简单了解一下即可。 代码清单...
外边提供LWIP_MEMPOOL宏定义,然后在包含 memp_std.h 文件,编译器就会处理。 参考例子: // memp_std.h 文件#ifLWIP_RAWLWIP_MEMPOOL(RAW_PCB,MEMP_NUM_RAW_PCB,sizeof(structraw_pcb),"RAW_PCB")#endif/* LWIP_RAW */#ifLWIP_UDPLWIP_MEMPOOL(UDP_PCB,MEMP_NUM_UDP_PCB,sizeof(struct...
LWIP_DECLARE_MEMP_BASE_ALIGNED(name, ((num) * (MEMP_SIZE + MEMP_ALIGN_SIZE(size))); -#else /* USE_LIBOS */ +#else /* GAZELLE_ENABLE */ #define LWIP_MEMPOOL_DECLARE(name,num,size,desc) \ LWIP_DECLARE_MEMORY_ALIGNED(memp_memory_ ## name ## _base, ((num) * (MEMP_SIZE...