abi mempool_20200115
authorOlivier Matz <olivier.matz@6wind.com>
Wed, 15 Jan 2020 16:36:36 +0000 (17:36 +0100)
committerOlivier Matz <olivier.matz@6wind.com>
Wed, 15 Jan 2020 16:36:36 +0000 (17:36 +0100)
lib/librte_mempool/rte_mempool.c
lib/librte_mempool/rte_mempool.h
lib/librte_mempool/rte_mempool_version.map

index 03c8d98..d520ef0 100644 (file)
@@ -31,6 +31,7 @@
 #include <rte_string_fns.h>
 #include <rte_spinlock.h>
 #include <rte_tailq.h>
+#include <rte_function_versioning.h>
 
 #include "rte_mempool.h"
 
@@ -297,8 +298,14 @@ mempool_ops_alloc_once(struct rte_mempool *mp)
  * zone. Return the number of objects added, or a negative value
  * on error.
  */
-static int
-__rte_mempool_populate_iova(struct rte_mempool *mp, char *vaddr,
+int
+rte_mempool_populate_iova_v21(struct rte_mempool *mp, char *vaddr,
+       rte_iova_t iova, size_t len, rte_mempool_memchunk_free_cb_t *free_cb,
+       void *opaque);
+
+VERSION_SYMBOL(rte_mempool_populate_iova, _v21, 21);
+int
+rte_mempool_populate_iova_v21(struct rte_mempool *mp, char *vaddr,
        rte_iova_t iova, size_t len, rte_mempool_memchunk_free_cb_t *free_cb,
        void *opaque)
 {
@@ -355,16 +362,27 @@ fail:
        rte_free(memhdr);
        return ret;
 }
-
-/* Compat wrapper, to be removed when changing the API is allowed (v20.11). */
+MAP_STATIC_SYMBOL(
+       int rte_mempool_populate_iova(struct rte_mempool *mp, char *vaddr,
+                               rte_iova_t iova, size_t len,
+                               rte_mempool_memchunk_free_cb_t *free_cb,
+                               void *opaque),
+       rte_mempool_populate_iova_v20);
+
+VERSION_SYMBOL(rte_mempool_populate_iova, _v20, 20);
+BIND_DEFAULT_SYMBOL(rte_mempool_populate_iova, _v20, 20);
+int
+rte_mempool_populate_iova_v20(struct rte_mempool *mp, char *vaddr,
+       rte_iova_t iova, size_t len, rte_mempool_memchunk_free_cb_t *free_cb,
+       void *opaque);
 int
-rte_mempool_populate_iova(struct rte_mempool *mp, char *vaddr,
+rte_mempool_populate_iova_v20(struct rte_mempool *mp, char *vaddr,
        rte_iova_t iova, size_t len, rte_mempool_memchunk_free_cb_t *free_cb,
        void *opaque)
 {
        int ret;
 
-       ret = __rte_mempool_populate_iova(mp, vaddr, iova, len, free_cb,
+       ret = rte_mempool_populate_iova_v21(mp, vaddr, iova, len, free_cb,
                                        opaque);
        if (ret == -ENOBUFS)
                ret = -EINVAL;
@@ -422,7 +440,7 @@ rte_mempool_populate_virt(struct rte_mempool *mp, char *addr,
                                break;
                }
 
-               ret = __rte_mempool_populate_iova(mp, addr + off, iova,
+               ret = rte_mempool_populate_iova_v21(mp, addr + off, iova,
                        phys_len, free_cb, opaque);
                if (ret == -ENOBUFS)
                        continue;
index c08bb44..f81152a 100644 (file)
@@ -1108,10 +1108,7 @@ rte_mempool_free(struct rte_mempool *mp);
  * @return
  *   The number of objects added on success.
  *   On error, the chunk is not added in the memory list of the
- *   mempool and a negative errno is returned:
- *   (-ENOBUFS): not enough room in chunk for one object.
- *   (-ENOSPC): mempool is already populated.
- *   (-ENOMEM): allocation failure.
+ *   mempool and a negative errno is returned.
  */
 int rte_mempool_populate_iova(struct rte_mempool *mp, char *vaddr,
        rte_iova_t iova, size_t len, rte_mempool_memchunk_free_cb_t *free_cb,
index d002dfc..070502a 100644 (file)
@@ -35,6 +35,12 @@ DPDK_20.0 {
        local: *;
 };
 
+DPDK_21.0 {
+       global:
+
+       rte_mempool_populate_iova;
+} DPDK_20.0;
+
 EXPERIMENTAL {
        global: