devargs: add non-variadic parsing function
[dpdk.git] / lib / librte_eal / common / eal_common_dev.c
index 149e9ad..ce4b514 100644 (file)
@@ -114,29 +114,12 @@ int rte_eal_dev_detach(struct rte_device *dev)
        return ret;
 }
 
-static char *
-full_dev_name(const char *bus, const char *dev, const char *args)
-{
-       char *name;
-       size_t len;
-
-       len = snprintf(NULL, 0, "%s:%s,%s", bus, dev, args) + 1;
-       name = calloc(1, len);
-       if (name == NULL) {
-               RTE_LOG(ERR, EAL, "Could not allocate full device name\n");
-               return NULL;
-       }
-       snprintf(name, len, "%s:%s,%s", bus, dev, args);
-       return name;
-}
-
 int __rte_experimental rte_eal_hotplug_add(const char *busname, const char *devname,
                        const char *devargs)
 {
        struct rte_bus *bus;
        struct rte_device *dev;
        struct rte_devargs *da;
-       char *name;
        int ret;
 
        bus = rte_bus_find_by_name(busname);
@@ -151,21 +134,16 @@ int __rte_experimental rte_eal_hotplug_add(const char *busname, const char *devn
                return -ENOTSUP;
        }
 
-       name = full_dev_name(busname, devname, devargs);
-       if (name == NULL)
-               return -ENOMEM;
-
        da = calloc(1, sizeof(*da));
-       if (da == NULL) {
-               ret = -ENOMEM;
-               goto err_name;
-       }
+       if (da == NULL)
+               return -ENOMEM;
 
-       ret = rte_eal_devargs_parse(name, da);
+       ret = rte_devargs_parsef(da, "%s:%s,%s",
+                                busname, devname, devargs);
        if (ret)
                goto err_devarg;
 
-       ret = rte_eal_devargs_insert(da);
+       ret = rte_devargs_insert(da);
        if (ret)
                goto err_devarg;
 
@@ -187,16 +165,13 @@ int __rte_experimental rte_eal_hotplug_add(const char *busname, const char *devn
                        dev->name);
                goto err_devarg;
        }
-       free(name);
        return 0;
 
 err_devarg:
-       if (rte_eal_devargs_remove(busname, devname)) {
+       if (rte_devargs_remove(busname, devname)) {
                free(da->args);
                free(da);
        }
-err_name:
-       free(name);
        return ret;
 }
 
@@ -229,7 +204,7 @@ rte_eal_hotplug_remove(const char *busname, const char *devname)
        if (ret)
                RTE_LOG(ERR, EAL, "Driver cannot detach the device (%s)\n",
                        dev->name);
-       rte_eal_devargs_remove(busname, devname);
+       rte_devargs_remove(busname, devname);
        return ret;
 }