netbuf是应用程序和协议栈内核交互的一种数据结构
netbuf并不复杂,下面是实现代码
/* 创建netbuf */
struct netbuf *netbuf_new(void)
{
struct netbuf *buf;
/* 为netbuf申请内存空间 */
buf = (struct netbuf *)memp_malloc(MEMP_NETBUF);
if(buf != NULL)
{
/* 清空参数 */
buf->p = NULL;
buf->ptr = NULL;
ip_addr_set_any(&buf->addr);
buf->port = 0;
return buf;
}
else
{
return NULL;
}
}
/* 删除netbuf */
void netbuf_delete(struct netbuf *buf)
{
if(buf != NULL)
{
/* 先释放pbuf */
if(buf->p != NULL)
{
pbuf_free(buf->p);
buf->p = buf->ptr = NULL;
}
/* 再释放netbuf */
memp_free(MEMP_NETBUF, buf);
}
}
/* 为netbuf申请数据(pbuf)空间 */
void *netbuf_alloc(struct netbuf *buf, u16_t size)
{
/* 为netbuf申请数据(pbuf)空间 */
if(buf->p !=