mbuf¶
mbuf用来存储数据,例如:报文,事件
使用mempool管理维护mbuf
mbuf的结构¶
| 组成 | 描述 | 长度 | 是否必须 |
|---|---|---|---|
| struct mbuf | mbuf结构体头 |
128字节 | 必须 |
| 数据 | 实际数据部分 数据部分又分为3个部分: headroom(默认128字节) dataroom tailroom |
自定义 | 必须 |

mbuf结构体里的长度定义:
| 成员 | 说明 |
|---|---|
| void *buf_addr | 数据起始地址 |
| uint16_t data_off | buf_addr到有效数据长度偏移,即headroom的长度 |
| uint16_t nb_segs | 有多少个数据段,即一个mbuf链上有多少个mbuf |
| uint32_t pkt_len | 有效数据总长;如果存在链,则链上每个buf的data_len总和 |
| uint16_t data_len | 该mbuf内有效数据长度 |
| uint16_t buf_len | 该mbuf数据部分总长,包括headroom,dataroom,tailroom |
数据分段情况示意图:
