static__rte_always_inlinevoidrte_mempool_do_generic_put(structrte_mempool*mp,void*const*obj_table,unsignedintn,structrte_mempool_cache*cache){void**cache_objs;/* No cache provided */// 没有local cache直接入rte_ringif(unlikely(cache==NULL))gotodriver_enqueue;/* increment stat now, adding i...
rte_mempool_createif((flags & MEMPOOL_F_SP_PUT) && (flags &MEMPOOL_F_SC_GET)) ret= rte_mempool_set_ops_byname(mp,"ring_sp_sc", NULL);elseif(flags &MEMPOOL_F_SP_PUT) ret= rte_mempool_set_ops_byname(mp,"ring_sp_mc", NULL);elseif(flags &MEMPOOL_F_SC_GET) ret= rte_mempool...
rte_mempool_createif((flags & MEMPOOL_F_SP_PUT) && (flags &MEMPOOL_F_SC_GET)) ret= rte_mempool_set_ops_byname(mp,"ring_sp_sc", NULL);elseif(flags &MEMPOOL_F_SP_PUT) ret= rte_mempool_set_ops_byname(mp,"ring_sp_mc", NULL);elseif(flags &MEMPOOL_F_SC_GET) ret= rte_mempool...
we can refer to mempool cache to implement "ring_single_thread_sp_sc". In this simple scenario, the performance should be improved. This scenario is common: Such as mbuf mempool. dpdk NICs receives a packet, the protocol stack processes and releases the packet. The alloc and release of the...
rte_mempool_put(message_pool, p); } }structprivate_data * priv = (structprivate_data *)rte_mempool_get_priv(message_pool); priv->value =1000;}staticvoidprint_ring(structrte_ring *ring) {structdata *d;while(rte_ring_dequeue(ring, (void*)&d) ==0) { ...