Re: [PATCH v4 3/3] mempool: allow for user-owned mempool caches
From: Lazaros Koromilas <hidden>
Date: 2016-06-28 17:20:44
Hi Olivier, thanks for fixing those, just one comment below On Mon, Jun 27, 2016 at 4:50 PM, Olivier Matz [off-list ref] wrote:
quoted hunk ↗ jump to hunk
From: Lazaros Koromilas <redacted> The mempool cache is only available to EAL threads as a per-lcore resource. Change this so that the user can create and provide their own cache on mempool get and put operations. This works with non-EAL threads too. This commit introduces the new API calls: rte_mempool_cache_create(size, socket_id) rte_mempool_cache_free(cache) rte_mempool_cache_flush(cache, mp) rte_mempool_default_cache(mp, lcore_id) Changes the API calls: rte_mempool_generic_put(mp, obj_table, n, cache, flags) rte_mempool_generic_get(mp, obj_table, n, cache, flags) The cache-oblivious API calls use the per-lcore default local cache. Signed-off-by: Lazaros Koromilas <redacted> Acked-by: Olivier Matz <redacted> --- app/test/test_mempool.c | 75 +++++++++---- app/test/test_mempool_perf.c | 70 ++++++++++--- lib/librte_mempool/rte_mempool.c | 66 +++++++++++- lib/librte_mempool/rte_mempool.h | 163 +++++++++++++++++++++-------- lib/librte_mempool/rte_mempool_version.map | 4 + 5 files changed, 296 insertions(+), 82 deletions(-)diff --git a/app/test/test_mempool.c b/app/test/test_mempool.c index 55c2cbc..5b3c754 100644 --- a/app/test/test_mempool.c +++ b/app/test/test_mempool.c@@ -75,10 +75,18 @@ #define MAX_KEEP 16 #define MEMPOOL_SIZE ((rte_lcore_count()*(MAX_KEEP+RTE_MEMPOOL_CACHE_MAX_SIZE))-1) -#define RET_ERR() do { \ +#define LOG_ERR() do { \ printf("test failed at %s():%d\n", __func__, __LINE__); \ + } while (0) +#define RET_ERR() do { \ + LOG_ERR(); \ return -1; \ } while (0) +#define GOTO_ERR(err, label) do { \ + LOG_ERR(); \ + ret = err; \ + goto label; \ + } while (0)
Here, GOTO_ERR still assumes a variable named ret in the function and
has the value as an argument while RET_ERR always returns -1. I'd
changed it to use -1:
#define GOTO_ERR(retvar, label) do { LOG_ERR(); retvar = -1; goto
label; } while (0)
Should I do it like that and also quickly add the documentation in a v5?
Thanks,
Lazaros.