zoukankan      html  css  js  c++  java
  • pbuf类型和应用

    下面的讨论仅限于RAW API。

    按存储方式分类

    1. PBUF_RAM

        从一般性的Heap中分配。可用空间大小受MEM_SIZE宏控制。可看作一般意义上的动态内存。

        用途:

        a) 将应用层中的待发送数据复制下来(当使用拷贝发送时)

        b) 构造请求类的数据包(ARP,DHCP,DNS,etc)

        c) 当发送零拷贝数据时,需要额外的pbuf用于下层协议的协议头

    2. PBUF_POOL

        驱动使用这种类型的PBUF接收网卡数据包。其数量和大小受PBUF_POOL_SIZE和PBUF_POOL_BUFSIZE这两个宏控制。

        默认情况下使用和PBUF_RAM互相独立的缓冲(可更改options使用公共缓冲?)。

        当单个PBUF_POOL不满足大小要求时,会分配多个PBUF_POOL并link在一起。

        一般用于数据包的接收。

    3. PBUF_ROM/REF

        当应用程序使用零拷贝选项发送数据时,使用这种类型的pbuf保存待发送数据位置和长度。

        可用数量受MEMP_NUM_PBUF控制。

        由于这种类型的pbuf只有头部,所以占用空间不大。

        需要说明的是,PBUF_POOL和PBUF_ROM/REF这两种类型的pbuf大小和数量是在编译时确定的,所以它们都由lwip的内存池管理代码管着(memp_malloc/memp_free)。

    按协议层分类

    PBUF_TRANSPORT, PBUF_IP, PBUF_LINK, PBUF_RAW

  • 相关阅读:
    AE(ArcGIS Engine)的安装与配置(附加ArcGIS安装及所需安装包)
    C# 封装
    如何修改C# winform程序图标
    C#中ESRI.ArcGIS.esriSystem的引用问题
    c#窗体进度条
    【转】C#路径中获取文件全路径、目录、扩展名、文件名称
    【转】C# Application.DoEvent()的作用
    如何在Word中批量选中特定文本
    GIT
    git使用
  • 原文地址:https://www.cnblogs.com/byeyear/p/3525515.html
Copyright © 2011-2022 走看看