码迷,mamicode.com
首页 > 其他好文 > 详细

lwip之四:pbuf

时间:2016-05-11 19:25:22      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:

一、Pbuf

pbuf_alloc(pbuf_layer layer, u16_t length, pbuf_type type)

layertype

技术分享技术分享 

 

ØPBUF_RAM 在RAM DATA区域分配

p = (struct pbuf*)mem_malloc(LWIP_MEM_ALIGN_SIZE(SIZEOF_STRUCT_PBUF + offset) + LWIP_MEM_ALIGN_SIZE(length));

p->payload = LWIP_MEM_ALIGN((void *)((u8_t *)p + SIZEOF_STRUCT_PBUF + offset));

offset依赖于layer

技术分享 

 

ØPBUF_POOL 在静态区域分配

p = (struct pbuf *)memp_malloc(MEMP_PBUF_POOL);

p->payload = LWIP_MEM_ALIGN((void *)((u8_t *)p + (SIZEOF_STRUCT_PBUF + offset)));//1th

......

q->payload = (void *)((u8_t *)q + SIZEOF_STRUCT_PBUF);//2th-->nth,看代码pq有关联

q->len = LWIP_MIN((u16_t)rem_len, PBUF_POOL_BUFSIZE_ALIGNED);

PBUF_POOL第一次是有offset(offset>=0)

MEMP_PBUF_POOL是固定分配的,最后一个pool可能有空间浪费,但速度快,一般用在接收/发送数据包的场合。

技术分享 

 

ØPBUF_REF/PBUF_ROM payload由用户赋值指向

p = (struct pbuf *)memp_malloc(MEMP_PBUF);

p->payload = NULL;

代码中PBUF_REF/PBUF_ROM无差异,用户可以对PBUF_ROM做差异化处理。

技术分享 

技术分享 





lwip之四:pbuf

标签:

原文地址:http://www.cnblogs.com/freezlz/p/5483202.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!