m = rte_pktmbuf_alloc(mpool); rte_pktmbuf_append(m, 1000); mbuf_dump(m); m2 = rte_pktmbuf_alloc(mpool); rte_pktmbuf_append(m2, 500); mbuf_dump(m2); rte_pktmbuf_chain(m, m2); printf("after m rte_pktmbuf_chain \n"); mbuf_dump(m);
RTE_PKTMBUF_HEADROOM: 128 sizeof(mbuf): 128 m: 0x13f919c00 m->refcnt: 1 m->buf_addr: 0x13f919c90 m->data_off: 128 m->buf_len: 1646 m->pkt_len: 1000 m->data_len: 1000 m->nb_segs: 1 m->next: (nil) m->buf_addr+m->data_off: 0x13f919d10 rte_pktmbuf_mtod(m): 0x13f919d10 rte_pktmbuf_data_len(m): 1000 rte_pktmbuf_pkt_len(m): 1000 rte_pktmbuf_headroom(m): 128 rte_pktmbuf_tailroom(m): 518 rte_pktmbuf_data_room_size(mpool): 1646 rte_pktmbuf_priv_size(mpool): 16 RTE_PKTMBUF_HEADROOM: 128 sizeof(mbuf): 128 m: 0x13f919480 m->refcnt: 1 m->buf_addr: 0x13f919510 m->data_off: 128 m->buf_len: 1646 m->pkt_len: 500 m->data_len: 500 m->nb_segs: 1 m->next: (nil) m->buf_addr+m->data_off: 0x13f919590 rte_pktmbuf_mtod(m): 0x13f919590 rte_pktmbuf_data_len(m): 500 rte_pktmbuf_pkt_len(m): 500 rte_pktmbuf_headroom(m): 128 rte_pktmbuf_tailroom(m): 1018 rte_pktmbuf_data_room_size(mpool): 1646 rte_pktmbuf_priv_size(mpool): 16 ================== after m rte_pktmbuf_chain ===================== RTE_PKTMBUF_HEADROOM: 128 sizeof(mbuf): 128 m: 0x13f919c00 m->refcnt: 1 m->buf_addr: 0x13f919c90 m->data_off: 128 m->buf_len: 1646 m->pkt_len: 1500 m->data_len: 1000 m->nb_segs: 2 m->next: 0x13f919480 m->buf_addr+m->data_off: 0x13f919d10 rte_pktmbuf_mtod(m): 0x13f919d10 rte_pktmbuf_data_len(m): 1000 rte_pktmbuf_pkt_len(m): 1500 rte_pktmbuf_headroom(m): 128 rte_pktmbuf_tailroom(m): 518 rte_pktmbuf_data_room_size(mpool): 1646 rte_pktmbuf_priv_size(mpool): 16

原文:https://www.cnblogs.com/dream397/p/13744111.html