mempool: support flushing the default cache
authorArtem V. Andreev <artem.andreev@oktetlabs.ru>
Mon, 16 Apr 2018 13:24:40 +0000 (14:24 +0100)
committerThomas Monjalon <thomas@monjalon.net>
Tue, 24 Apr 2018 00:17:43 +0000 (02:17 +0200)
Mempool get/put API cares about cache itself, but sometimes it is
required to flush the cache explicitly.

The function is moved in the file since it now requires
rte_mempool_default_cache().

Signed-off-by: Artem V. Andreev <artem.andreev@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
lib/librte_mempool/rte_mempool.h

index 314f909..3e06ae0 100644 (file)
@@ -1168,22 +1168,6 @@ rte_mempool_cache_create(uint32_t size, int socket_id);
 void
 rte_mempool_cache_free(struct rte_mempool_cache *cache);
 
-/**
- * Flush a user-owned mempool cache to the specified mempool.
- *
- * @param cache
- *   A pointer to the mempool cache.
- * @param mp
- *   A pointer to the mempool.
- */
-static __rte_always_inline void
-rte_mempool_cache_flush(struct rte_mempool_cache *cache,
-                       struct rte_mempool *mp)
-{
-       rte_mempool_ops_enqueue_bulk(mp, cache->objs, cache->len);
-       cache->len = 0;
-}
-
 /**
  * Get a pointer to the per-lcore default mempool cache.
  *
@@ -1206,6 +1190,26 @@ rte_mempool_default_cache(struct rte_mempool *mp, unsigned lcore_id)
        return &mp->local_cache[lcore_id];
 }
 
+/**
+ * Flush a user-owned mempool cache to the specified mempool.
+ *
+ * @param cache
+ *   A pointer to the mempool cache.
+ * @param mp
+ *   A pointer to the mempool.
+ */
+static __rte_always_inline void
+rte_mempool_cache_flush(struct rte_mempool_cache *cache,
+                       struct rte_mempool *mp)
+{
+       if (cache == NULL)
+               cache = rte_mempool_default_cache(mp, rte_lcore_id());
+       if (cache == NULL || cache->len == 0)
+               return;
+       rte_mempool_ops_enqueue_bulk(mp, cache->objs, cache->len);
+       cache->len = 0;
+}
+
 /**
  * @internal Put several objects back in the mempool; used internally.
  * @param mp