[dpdk-dev,v5,18/19] devargs: remove function
Checks
Commit Message
This function is now necessary due to the new unplug rte_bus API.
Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
---
lib/librte_eal/bsdapp/eal/rte_eal_version.map | 1 +
lib/librte_eal/common/eal_common_devargs.c | 18 ++++++++++++++++++
lib/librte_eal/common/include/rte_devargs.h | 14 ++++++++++++++
lib/librte_eal/linuxapp/eal/rte_eal_version.map | 1 +
4 files changed, 34 insertions(+)
@@ -204,5 +204,6 @@ DPDK_17.08 {
rte_bus_from_name;
rte_bus_from_dev;
rte_eal_devargs_clone;
+ rte_eal_devargs_rmv;
} DPDK_17.05;
@@ -183,6 +183,24 @@ rte_eal_devargs_add(enum rte_devtype devtype, const char *devargs_str)
return -1;
}
+/* Remove and free an rte_devargs. */
+int
+rte_eal_devargs_rmv(struct rte_devargs *da)
+{
+ struct rte_devargs *d;
+ void *tmp;
+
+ TAILQ_FOREACH_SAFE(d, &devargs_list, next, tmp) {
+ if (d == da) {
+ TAILQ_REMOVE(&devargs_list, d, next);
+ free(d->args);
+ free(d);
+ return 0;
+ }
+ }
+ return 1;
+}
+
/* Deep-copy of an rte_devargs. */
struct rte_devargs *
rte_eal_devargs_clone(struct rte_devargs *da)
@@ -163,6 +163,20 @@ rte_eal_devargs_parse(const char *dev,
int rte_eal_devargs_add(enum rte_devtype devtype, const char *devargs_str);
/**
+ * Remove a device from the user device list.
+ * The devargs is then freed.
+ *
+ * @param da
+ * devargs to remove.
+ *
+ * @return
+ * 0 on success.
+ * <0 on error.
+ * >0 if the devargs was not within the user device list.
+ */
+int rte_eal_devargs_rmv(struct rte_devargs *da);
+
+/**
* Deep copy an rte_devargs.
*
* @param da
@@ -208,5 +208,6 @@ DPDK_17.08 {
rte_bus_from_name;
rte_bus_from_dev;
rte_eal_devargs_clone;
+ rte_eal_devargs_rmv;
} DPDK_17.05;