lwip可以不用malloc,而完全用pool,全用全局变量,没看明白怎么实现的。

#if LWIP_NETCONN || LWIP_SOCKET
LWIP_MEMPOOL
(NETBUF, MEMP_NUM_NETBUF, sizeof(struct netbuf), "NETBUF")
LWIP_MEMPOOL(NETCONN, MEMP_NUM_NETCONN, sizeof(struct netconn), "NETCONN")
#endif /* LWIP_NETCONN || LWIP_SOCKET */
 #define LWIP_MEMPOOL(name,num,size,desc) LWIP_MEMPOOL_DECLARE(name,num,size,desc)
 /**
* @ingroup mempool
* Declare a private memory pool
* Private mempools example:
* .h: only when pool is used in multiple .c files: LWIP_MEMPOOL_PROTOTYPE(my_private_pool);
* .c:
* - in global variables section: LWIP_MEMPOOL_DECLARE(my_private_pool, 10, sizeof(foo), "Some description")
* - call ONCE before using pool (e.g. in some init() function): LWIP_MEMPOOL_INIT(my_private_pool);
* - allocate: void* my_new_mem = LWIP_MEMPOOL_ALLOC(my_private_pool);
* - free: LWIP_MEMPOOL_FREE(my_private_pool, my_new_mem);
*
* To relocate a pool, declare it as extern in cc.h. Example for GCC:
* extern u8_t __attribute__((section(".onchip_mem"))) memp_memory_my_private_pool[];
*/
#define LWIP_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_INSTANCE(memp_stats_ ## name) \
\
static struct memp *memp_tab_ ## name; \
\
const struct memp_desc memp_ ## name = { \
DECLARE_LWIP_MEMPOOL_DESC(desc) \
LWIP_MEMPOOL_DECLARE_STATS_REFERENCE(memp_stats_ ## name) \
LWIP_MEM_ALIGN_SIZE(size), \
(num), \
memp_memory_ ## name ## _base, \
&memp_tab_ ## name \
}; #endif /* MEMP_MEM_MALLOC */
1 #ifndef LWIP_DECLARE_MEMORY_ALIGNED
2 #define LWIP_DECLARE_MEMORY_ALIGNED(variable_name, size) u8_t variable_name[LWIP_MEM_ALIGN_BUFFER(size)]
3 #endif

最新文章

  1. Vijos1006P1006晴天小猪历险记之Hill[最短路]
  2. >>> 主页推荐链接
  3. C# 文字转声音
  4. oracle 10G以上版本 树形查询新加的几个功能
  5. 读写txt文件
  6. think straight系列读书笔记之《暗时间》
  7. LeeCode-Rotate Array
  8. MongoDB学习笔记-认识MongoDB
  9. 一文读懂 Spring Boot、微服务架构和大数据治理三者之间的故事
  10. sevlet的url-pattern设置
  11. 飞机找不到,流量哪去了?记一次移动WAP网关导致的问题
  12. python-面向对象-08_多态
  13. redis哨兵机制一(转)
  14. 洛谷P4428二进制 [BJOI2018] 线段树
  15. Android异步处理之AsyncTaskLoader简单使用
  16. git指令整理汇总
  17. js实现选项卡切换
  18. 4. NBU文件备份与恢复,图形界面&字符界面操作
  19. Flex接收51单片机发送过来的16进制数据转换为String
  20. [转]升级Flash Builder 4.6中的Flash Player版本

热门文章

  1. WIN10升级后输入法无法输入中文
  2. Beetlex实现完整的HTTP协议
  3. NOIP提高组2018试题解析 Day1 T1 铺设道路 P5019
  4. 关于neo4j初入门(3)
  5. 如何在匿名thread子类中保证线程安全
  6. [bzoj4567] [loj#2012] [SCOI2016] 背单词
  7. 编程基础--XML约束
  8. AVL练习题——宠物收养所
  9. XSS Challenges学习笔记 Stage#1~ Stage#19
  10. epel-release的卸载重装