rte_ring_dequeue_burst用法 rte_ring_dequeue_burst函数用于从环形队列中批量出队元素。函数的原型如下: ```c unsigned rte_ring_dequeue_burst(struct rte_ring *r, void **obj_table, unsigned int n) ``` 参数说明: - r:指向要出队的环形队列的指针。 - obj_table:指向存储出队元素指针的数组的指针...
struct rte_ring *r = rte_ring_create(“MY_RING”, 1024,rte_socket_id(), 0); 2.出入队 有不同的出入队方式(单、bulk、burst)都在rte_ring.h中。 例如:rte_ring_enqueue和rte_ring_dequeue 这种数据结构与链表队列相比: 优点如下: 更快:比较void *大小的数据,只需要执行单次Compare-And-Swap指令,...
29 struct rte_ring_debug_stats stats[RTE_MAX_LCORE]; 30 #endif 31 32 void * ring[0] __rte_cache_aligned; /**< Memory space of ring starts here. 33 * not volatile so need to be careful 34 * about compiler re-ordering */ 35 }; 3.2 入队函数 __rte_ring_mp_do_enqueue: 1 sta...
};/*Update used ring with desc information*/vq->used->ring[res_cur_idx & (vq->size -1)].id =head[packet_success];/*Drop the packet if it is uncompleted*/if(unlikely(uncompleted_pkt ==1)) vq->used->ring[res_cur_idx & (vq->size -1)].len =vq->vhost_hlen;elsevq->used->r...
}if(rte_ring_enqueue_bulk(ring, (void**)mbufs, BURST_SIZE,NULL) ==0) {for(inti =0; i < BURST_SIZE; i++) {rte_pktmbuf_free(mbufs[i]); } } }returnNULL; }void*consumer(void*arg){while(1) {structrte_mbuf*mbufs[BURST_SIZE];unsignedintnb_rx =rte_ring_dequeue_bulk(ring, ...
n= __rte_ring_move_cons_head(r, (int)is_sc, n, behavior,&cons_head, &cons_next, &entries);if(n ==0)gotoend; DEQUEUE_PTRS(r,&r[1], cons_head, obj_table, n,void*); update_tail(&r->cons, cons_head, cons_next, is_sc,0); ...
ptask->rx_params_sw.last_read_ring =0; } INCR_EMPTY_CYCLES(ptask->stats,rte_rdtsc() - cur_tsc);return0; }else{returnMAX_RING_BURST; }#elseuint16_tnb_rx = rte_ring_sc_dequeue_burst(ptask->rx_params_sw.rx_rings[ptask->rx_params_sw.last_read_ring], (void**)rx_mbuf, MAX_...
*/ event_dequeue_burst_t dequeue_burst; /**< PMD dequeue burst function. */ event_maintain_t maintain; /**< PMD port maintenance function. */ event_tx_adapter_enqueue_t txa_enqueue; /**< PMD Tx adapter enqueue function. */ event_tx_adapter_enqueue_t txa_enqueue_same_dest...
*/ typedef uint16_t (*dequeue_pkt_burst_t)(void *qp, struct rte_crypto_op **ops, uint16_t nb_ops); /**< Dequeue processed packets from queue pair of a device. */ typedef uint16_t (*enqueue_pkt_burst_t)(void *qp, struct rte_crypto_op **ops, uint16_t nb_ops);...
推动世界向前发展,改善民生。 « 上一篇 dpdk应用场景系列03--rte_ring 使用(多个线程之间传递数据) 下一篇 » dpdk应用场景系列05--rte_flow使用(流量处理) 引用和评论 numbers_parser putao阅读223 0条评论 得票最新 评论支持部分 Markdown 语法:**粗体** _斜体_ [链接](http://example.com) `代码` ...