eal: fix C++ build
authorChristoph Gysin <christoph.gysin@gmail.com>
Tue, 29 Sep 2015 06:53:01 +0000 (09:53 +0300)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Thu, 22 Oct 2015 15:50:51 +0000 (17:50 +0200)
'virtual' is a keyword and can't be used if the code is to compile with
C++ compilers.

If rte_devargs.h was included in C++ code, compilation with clang++
failed with an error. g++ did not fail, but only because of a bug
that treats it as an anonymous struct with a decl-specifier which it
ignores.

This simply renames the member to 'virt'.

Reported-by: Ming Zhao <mzhao@luminatewireless.com>
Signed-off-by: Christoph Gysin <christoph.gysin@gmail.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
Acked-by: David Marchand <david.marchand@6wind.com>
app/test/test_devargs.c
doc/guides/rel_notes/release_2_2.rst
lib/librte_eal/common/eal_common_dev.c
lib/librte_eal/common/eal_common_devargs.c
lib/librte_eal/common/include/rte_devargs.h

index f7fc59c..049f32d 100644 (file)
@@ -91,8 +91,8 @@ test_devargs(void)
        if (rte_eal_devargs_add(RTE_DEVTYPE_VIRTUAL, "eth_ring1,k1=val,k2=val2") < 0)
                goto fail;
        devargs = TAILQ_FIRST(&devargs_list);
-       if (strncmp(devargs->virtual.drv_name, "eth_ring1",
-                       sizeof(devargs->virtual.drv_name)) != 0)
+       if (strncmp(devargs->virt.drv_name, "eth_ring1",
+                       sizeof(devargs->virt.drv_name)) != 0)
                goto fail;
        if (!devargs->args || strcmp(devargs->args, "k1=val,k2=val2") != 0)
                goto fail;
index 4f75cff..080fd9f 100644 (file)
@@ -94,6 +94,8 @@ API Changes
 * The deprecated ring PMD functions are removed:
   rte_eth_ring_pair_create() and rte_eth_ring_pair_attach().
 
+* The devargs union field virtual is renamed to virt for C++ compatibility.
+
 
 ABI Changes
 -----------
index 4089d66..a8a4146 100644 (file)
@@ -107,10 +107,10 @@ rte_eal_dev_init(void)
                if (devargs->type != RTE_DEVTYPE_VIRTUAL)
                        continue;
 
-               if (rte_eal_vdev_init(devargs->virtual.drv_name,
+               if (rte_eal_vdev_init(devargs->virt.drv_name,
                                        devargs->args)) {
                        RTE_LOG(ERR, EAL, "failed to initialize %s device\n",
-                                       devargs->virtual.drv_name);
+                                       devargs->virt.drv_name);
                        return -1;
                }
        }
index ec56165..5d075d0 100644 (file)
@@ -107,9 +107,9 @@ rte_eal_devargs_add(enum rte_devtype devtype, const char *devargs_str)
                break;
        case RTE_DEVTYPE_VIRTUAL:
                /* save driver name */
-               ret = snprintf(devargs->virtual.drv_name,
-                              sizeof(devargs->virtual.drv_name), "%s", buf);
-               if (ret < 0 || ret >= (int)sizeof(devargs->virtual.drv_name))
+               ret = snprintf(devargs->virt.drv_name,
+                              sizeof(devargs->virt.drv_name), "%s", buf);
+               if (ret < 0 || ret >= (int)sizeof(devargs->virt.drv_name))
                        goto fail;
 
                break;
@@ -169,7 +169,7 @@ rte_eal_devargs_dump(FILE *f)
                               devargs->args);
                else if (devargs->type == RTE_DEVTYPE_VIRTUAL)
                        fprintf(f, "  VIRTUAL %s %s\n",
-                              devargs->virtual.drv_name,
+                              devargs->virt.drv_name,
                               devargs->args);
                else
                        fprintf(f, "  UNKNOWN %s\n", devargs->args);
index 7084ae2..53c59f5 100644 (file)
@@ -86,7 +86,7 @@ struct rte_devargs {
                struct {
                        /** Driver name. */
                        char drv_name[32];
-               } virtual;
+               } virt;
        };
        /** Arguments string as given by user or "" for no argument. */
        char *args;