[dpdk-dev] [PATCH v2] mempool: replace c memcpy code semantics with optimized rte_memcpy
Olivier Matz
olivier.matz at 6wind.com
Mon May 30 10:45:11 CEST 2016
Hi Jerin,
On 05/26/2016 10:07 AM, Jerin Jacob wrote:
> Signed-off-by: Jerin Jacob <jerin.jacob at caviumnetworks.com>
> ---
> v1..v2
> Corrected the the git commit message(s/mbuf/mempool/g)
> ---
> lib/librte_mempool/rte_mempool.h | 5 ++---
> 1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/lib/librte_mempool/rte_mempool.h b/lib/librte_mempool/rte_mempool.h
> index 60339bd..24876a2 100644
> --- a/lib/librte_mempool/rte_mempool.h
> +++ b/lib/librte_mempool/rte_mempool.h
> @@ -73,6 +73,7 @@
> #include <rte_memory.h>
> #include <rte_branch_prediction.h>
> #include <rte_ring.h>
> +#include <rte_memcpy.h>
>
> #ifdef __cplusplus
> extern "C" {
> @@ -739,7 +740,6 @@ __mempool_put_bulk(struct rte_mempool *mp, void * const *obj_table,
> unsigned n, int is_mp)
> {
> struct rte_mempool_cache *cache;
> - uint32_t index;
> void **cache_objs;
> unsigned lcore_id = rte_lcore_id();
> uint32_t cache_size = mp->cache_size;
> @@ -768,8 +768,7 @@ __mempool_put_bulk(struct rte_mempool *mp, void * const *obj_table,
> */
>
> /* Add elements back into the cache */
> - for (index = 0; index < n; ++index, obj_table++)
> - cache_objs[index] = *obj_table;
> + rte_memcpy(&cache_objs[0], obj_table, sizeof(void *) * n);
>
> cache->len += n;
>
>
I also checked in the get_bulk() function, which looks like that:
/* Now fill in the response ... */
for (index = 0, len = cache->len - 1;
index < n;
++index, len--, obj_table++)
*obj_table = cache_objs[len];
I think we could replace it by something like:
rte_memcpy(obj_table, &cache_objs[len - n], sizeof(void *) * n);
The only difference is that it won't reverse the pointers in the
table, but I don't see any problem with that.
What do you think?
Regards,
Olivier
More information about the dev
mailing list