Pbuf 类型
前面说的 Heap 和 Pool 都是 LwIP 动态分配内存的方式。而 LwIP 采用了 pbuf 的形式管理内存中的信息,pbuf 结构既支持动
态内存分配保存信息包内容,也支持让信息包数据驻留在静态存储区。pbufs 可以在一个链表中链接在一起,被称作一个
pbuf 链,这样一个信息包可以跨越几个 pbufs。
LwIP 有三种类型的 pbuf: PBUF_RAM, PBUF_ROM,PBUF_POOL。这三种类型拥有不同的使用目的。
PBUF_RAM 类型的 pbuf 用于应用程序发送的数据被动态生成的情况。在这种情况下,pbuf 系统不仅为应用数据分配内
存,还要给为这些数据预置的包头分配内存。包头大小在编译时是可配置的。MEM_SIZE 定义定义了这类 pbuf 的可用空
间大小。
PBUF_ROM 类型的 pbuf 用于应用程序要发送的数据放置在应用程序管理的存储区的情况。
PBUF_POOL 主要用于网络设备驱动层,因为分配一个 pbuf 的操作可以快速完成,所以非常适合用于中断处理。
|