[dpdk-dev] eal: fix C++ build (struct member: virtual)

Message ID 5606a0f0.9e18190a.7bb4d.44f4@mx.google.com (mailing list archive)
State Superseded, archived
Headers

Commit Message

Christoph Gysin Sept. 26, 2015, 1:09 p.m. UTC
  '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'.
---
 app/test/test_devargs.c                     | 4 ++--
 lib/librte_eal/common/eal_common_dev.c      | 4 ++--
 lib/librte_eal/common/eal_common_devargs.c  | 8 ++++----
 lib/librte_eal/common/include/rte_devargs.h | 2 +-
 4 files changed, 9 insertions(+), 9 deletions(-)
  

Comments

David Marchand Sept. 29, 2015, 6:24 a.m. UTC | #1
Hello Christoph,

On Sat, Sep 26, 2015 at 3:09 PM, Christoph Gysin <christoph.gysin@gmail.com>
wrote:

> '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'.
>

Ack with your signed-off.
  

Patch

diff --git a/app/test/test_devargs.c b/app/test/test_devargs.c
index f7fc59c..049f32d 100644
--- a/app/test/test_devargs.c
+++ b/app/test/test_devargs.c
@@ -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;
diff --git a/lib/librte_eal/common/eal_common_dev.c b/lib/librte_eal/common/eal_common_dev.c
index 4089d66..a8a4146 100644
--- a/lib/librte_eal/common/eal_common_dev.c
+++ b/lib/librte_eal/common/eal_common_dev.c
@@ -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;
 		}
 	}
diff --git a/lib/librte_eal/common/eal_common_devargs.c b/lib/librte_eal/common/eal_common_devargs.c
index ec56165..5d075d0 100644
--- a/lib/librte_eal/common/eal_common_devargs.c
+++ b/lib/librte_eal/common/eal_common_devargs.c
@@ -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);
diff --git a/lib/librte_eal/common/include/rte_devargs.h b/lib/librte_eal/common/include/rte_devargs.h
index 7084ae2..53c59f5 100644
--- a/lib/librte_eal/common/include/rte_devargs.h
+++ b/lib/librte_eal/common/include/rte_devargs.h
@@ -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;