Thread (21 messages) 21 messages, 3 authors, 2016-06-30

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.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help