<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                PBUF\_POOL類型的pbuf與PBUF\_RAM類型的pbuf都是差不多的,其pbuf結構體與數據緩沖區也是存在于連續的內存塊中,但它的空間是通過內存池分配的,這種類型的pbuf可以在極短的時間內分配得到,因為這是內存池分配策略的優勢,在網卡接收數據的時候,LwIP一般就使用這種類型的pbuf來存儲接收到的數據,申請PBUF\_POOL類型時,協議棧會在內存池中分配適當的內存池個數以滿足需要的數據區域大小。 除此之外,在系統進行內存池初始化的時候,還好初始化兩個與pbuf相關的內存池,分別為MEMP\_PBUF、MEMP\_ PBUF\_POOL,具體見: ``` LWIP_MEMPOOL(PBUF, MEMP_NUM_PBUF, sizeof(struct pbuf),"PBUF_REF/ROM") LWIP_PBUF_MEMPOOL(PBUF_POOL,PBUF_POOL_SIZE,PBUF_POOL_BUFSIZE,"PBUF_POOL") ``` MEMP\_PBUF內存池是專門用于存放pbuf數據結構的內存池,主要用于PBUF\_ROM、PBUF\_REF類型的pbuf,其大小為sizeof(struct pbuf),內存塊的數量為MEMP\_NUM\_PBUF;而MEMP\_PBUF\_POOL則包含pbuf結構與數據區域,也就是PBUF\_POOL類型的pbuf,內存塊的大小為PBUF\_POOL\_BUFSIZE,其值由用戶自己定義,默認為590(536+40+0+14)字節,當然也可以由我們定義TCP\_MSS的大小改變該宏定義,我們將宏定義TCP\_MSS的值定義為1460,這樣子我們PBUF\_POOL類型的pbuf的內存池大小為1514(1460+40+0+14),內存塊的個數為PBUF\_POOL\_SIZE。 如果按照默認的內存大小,對于有些很大的以太網數據包,可能就需要多個pbuf才能將這些數據存放下來,這就需要申請多個pbuf,因為是PBUF\_POOL類型的pbuf,所以申請內存空間只需要調用memp\_malloc()函數進行申請即可。然后再將這些pbuf通過鏈表的形式連接起組成pbuf鏈表上,以保證用戶的空間需求,分配與連接成功的pbuf示意圖具體見: ![](https://box.kancloud.cn/654c673d8dfd69d0989ec6a03d56cd96_965x568.png) 注意了,pbuf鏈表中第一個pbuf是有layer字段的,用于存放協議頭部,而在它后面的pbuf則是沒有該字段,由于PBUF\_POOL類型pbuf都是以固定長度分配的,在最后一個pbuf中,可能會被浪費大量的空間,并且,每個pbuf的tot\_len字段記錄的就是自身及其后面的pbuf總大小。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看