[dpdk-dev] [PATCH 08/11] device-args: use a comma instead of semicolon to separate key/values

Olivier Matz olivier.matz at 6wind.com
Fri Feb 28 18:25:47 CET 2014


This commit changes the API of --use-device. It changes the separator
used between each key/value pairs from ';' to ','. Indeed, ';' was not
the best choice as this character is also used to separate shell
commands, forcing the user to surround arguments with quotes.

Signed-off-by: Olivier Matz <olivier.matz at 6wind.com>
---
 app/test/test_devargs.c                     | 10 +++++-----
 app/test/test_eal_flags.c                   |  4 ++--
 app/test/test_kvargs.c                      | 14 +++++++-------
 lib/librte_eal/common/eal_common_devargs.c  |  4 ++--
 lib/librte_eal/common/include/rte_devargs.h |  8 ++++----
 lib/librte_eal/linuxapp/eal/eal.c           |  2 +-
 lib/librte_kvargs/rte_kvargs.h              |  6 +++---
 7 files changed, 24 insertions(+), 24 deletions(-)

diff --git a/app/test/test_devargs.c b/app/test/test_devargs.c
index 4d45d53..f5451b2 100644
--- a/app/test/test_devargs.c
+++ b/app/test/test_devargs.c
@@ -68,7 +68,7 @@ test_devargs(void)
 		goto fail;
 	if (rte_eal_devargs_add(RTE_DEVTYPE_WHITELISTED_PCI, "0000:5:00.0") < 0)
 		goto fail;
-	if (rte_eal_devargs_add(RTE_DEVTYPE_BLACKLISTED_PCI, "04:00.0;arg=val") < 0)
+	if (rte_eal_devargs_add(RTE_DEVTYPE_BLACKLISTED_PCI, "04:00.0,arg=val") < 0)
 		goto fail;
 	if (rte_eal_devargs_add(RTE_DEVTYPE_BLACKLISTED_PCI, "0000:01:00.1") < 0)
 		goto fail;
@@ -80,20 +80,20 @@ test_devargs(void)
 		goto fail;
 	if (rte_eal_devargs_add(RTE_DEVTYPE_VIRTUAL, "eth_ring0") < 0)
 		goto fail;
-	if (rte_eal_devargs_add(RTE_DEVTYPE_VIRTUAL, "eth_ring1;key=val;k2=val2") < 0)
+	if (rte_eal_devargs_add(RTE_DEVTYPE_VIRTUAL, "eth_ring1,key=val,k2=val2") < 0)
 		goto fail;
 	if (rte_eal_devargs_type_count(RTE_DEVTYPE_VIRTUAL) != 2)
 		goto fail;
 	free_devargs_list();
 
 	/* check virtual device with argument parsing */
-	if (rte_eal_devargs_add(RTE_DEVTYPE_VIRTUAL, "eth_ring1;k1=val;k2=val2") < 0)
+	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))
 		goto fail;
-	if (strncmp(devargs->args, "k1=val;k2=val2", sizeof(devargs->args) != 0))
+	if (strncmp(devargs->args, "k1=val,k2=val2", sizeof(devargs->args) != 0))
 		goto fail;
 	free_devargs_list();
 
@@ -117,7 +117,7 @@ test_devargs(void)
 		goto fail;
 	if (rte_eal_devargs_add(RTE_DEVTYPE_WHITELISTED_PCI, "foo") == 0)
 		goto fail;
-	if (rte_eal_devargs_add(RTE_DEVTYPE_WHITELISTED_PCI, ";") == 0)
+	if (rte_eal_devargs_add(RTE_DEVTYPE_WHITELISTED_PCI, ",") == 0)
 		goto fail;
 	if (rte_eal_devargs_add(RTE_DEVTYPE_WHITELISTED_PCI, "000f:0:0") == 0)
 		goto fail;
diff --git a/app/test/test_eal_flags.c b/app/test/test_eal_flags.c
index 9bab1a5..45d3d02 100644
--- a/app/test/test_eal_flags.c
+++ b/app/test/test_eal_flags.c
@@ -313,8 +313,8 @@ test_whitelist_flag(void)
 	const char *wlval2[] = {prgname, prefix, mp_flag, "-n", "1", "-c", "1",
 			use_device, "09:0B.3", use_device, "0a:0b.1"};
 	const char *wlval3[] = {prgname, prefix, mp_flag, "-n", "1", "-c", "1",
-			use_device, "09:0B.3;type=test",
-			use_device, "08:00.1;type=normal"};
+			use_device, "09:0B.3,type=test",
+			use_device, "08:00.1,type=normal"};
 
 	for (i = 0; i < sizeof(wlinval) / sizeof(wlinval[0]); i++) {
 		if (launch_proc(wlinval[i]) == 0) {
diff --git a/app/test/test_kvargs.c b/app/test/test_kvargs.c
index 2db9d08..c417ba2 100644
--- a/app/test/test_kvargs.c
+++ b/app/test/test_kvargs.c
@@ -84,7 +84,7 @@ static int test_valid_kvargs(void)
 	rte_kvargs_free(kvlist);
 
 	/* first test without valid_keys */
-	args = "foo=1234;check=value0;check=value1";
+	args = "foo=1234,check=value0,check=value1";
 	valid_keys = NULL;
 	kvlist = rte_kvargs_parse(args, valid_keys);
 	if (kvlist == NULL) {
@@ -145,7 +145,7 @@ static int test_valid_kvargs(void)
 	rte_kvargs_free(kvlist);
 
 	/* second test using valid_keys */
-	args = "foo=droids;check=value0;check=value1;check=wrong_value";
+	args = "foo=droids,check=value0,check=value1,check=wrong_value";
 	valid_keys = valid_keys_list;
 	kvlist = rte_kvargs_parse(args, valid_keys);
 	if (kvlist == NULL) {
@@ -190,11 +190,11 @@ static int test_invalid_kvargs(void)
 	/* list of argument that should fail */
 	const char *args_list[] = {
 		"wrong-key=x",     /* key not in valid_keys_list */
-		"foo=1;foo=",      /* empty value */
-		"foo=1;;foo=2",    /* empty key/value */
-		"foo=1;foo",       /* no value */
-		"foo=1;=2",        /* no key */
-		";=",              /* also test with a smiley */
+		"foo=1,foo=",      /* empty value */
+		"foo=1,,foo=2",    /* empty key/value */
+		"foo=1,foo",       /* no value */
+		"foo=1,=2",        /* no key */
+		",=",              /* also test with a smiley */
 		NULL };
 	const char **args;
 	const char *valid_keys_list[] = { "foo", "check", NULL };
diff --git a/lib/librte_eal/common/eal_common_devargs.c b/lib/librte_eal/common/eal_common_devargs.c
index de4ac6c..3d6656a 100644
--- a/lib/librte_eal/common/eal_common_devargs.c
+++ b/lib/librte_eal/common/eal_common_devargs.c
@@ -70,8 +70,8 @@ rte_eal_devargs_add(enum rte_devtype devtype, const char *devargs_str)
 	memset(devargs, 0, sizeof(*devargs));
 	devargs->type = devtype;
 
-	/* set the first ';' to '\0' to split name and arguments */
-	sep = strchr(buf, ';');
+	/* set the first ',' to '\0' to split name and arguments */
+	sep = strchr(buf, ',');
 	if (sep != NULL) {
 		sep[0] = '\0';
 		snprintf(devargs->args, sizeof(devargs->args), "%s", sep + 1);
diff --git a/lib/librte_eal/common/include/rte_devargs.h b/lib/librte_eal/common/include/rte_devargs.h
index fbfbe45..6dd901a 100644
--- a/lib/librte_eal/common/include/rte_devargs.h
+++ b/lib/librte_eal/common/include/rte_devargs.h
@@ -96,12 +96,12 @@ extern struct rte_devargs_list devargs_list;
  * Add a device to the user device list
  *
  * For PCI devices, the format of arguments string is "PCI_ADDR" or
- * "PCI_ADDR;key=val;key2=val2;...". Examples: "08:00.1", "0000:5:00.0",
- * "04:00.0;arg=val".
+ * "PCI_ADDR,key=val,key2=val2,...". Examples: "08:00.1", "0000:5:00.0",
+ * "04:00.0,arg=val".
  *
  * For virtual devices, the format of arguments string is "DRIVER_NAME*"
- * or "DRIVER_NAME*;key=val;key2=val2;...". Examples: "eth_ring",
- * "eth_ring0", "eth_pmdAnything;arg=0:arg2=1". The validity of the
+ * or "DRIVER_NAME*,key=val,key2=val2,...". Examples: "eth_ring",
+ * "eth_ring0", "eth_pmdAnything,arg=0:arg2=1". The validity of the
  * driver name is not checked by this function, it is done when probing
  * the drivers.
  *
diff --git a/lib/librte_eal/linuxapp/eal/eal.c b/lib/librte_eal/linuxapp/eal/eal.c
index 6502755..67b2097 100644
--- a/lib/librte_eal/linuxapp/eal/eal.c
+++ b/lib/librte_eal/linuxapp/eal/eal.c
@@ -612,7 +612,7 @@ eal_parse_use_device(const char *optarg)
 		return -1;
 
 	/* remove arguments in 'dup' string */
-	sep = strchr(dup, ';');
+	sep = strchr(dup, ',');
 	if (sep != NULL)
 		*sep = '\0';
 
diff --git a/lib/librte_kvargs/rte_kvargs.h b/lib/librte_kvargs/rte_kvargs.h
index 71c9630..ef4efab 100644
--- a/lib/librte_kvargs/rte_kvargs.h
+++ b/lib/librte_kvargs/rte_kvargs.h
@@ -40,7 +40,7 @@
  * RTE Argument parsing
  *
  * This module can be used to parse arguments whose format is
- * key1=value1;key2=value2;key3=value3;...
+ * key1=value1,key2=value2,key3=value3,...
  *
  * The same key can appear several times with the same or a different
  * value. Indeed, the arguments are stored as a list of key/values
@@ -58,7 +58,7 @@ extern "C" {
 #define RTE_KVARGS_MAX 32
 
 /** separator character used between each pair */
-#define RTE_KVARGS_PAIRS_DELIM	";"
+#define RTE_KVARGS_PAIRS_DELIM	","
 
 /** separator character used between key and value */
 #define RTE_KVARGS_KV_DELIM	"="
@@ -83,7 +83,7 @@ struct rte_kvargs {
  * Allocate a rte_kvargs and store key/value associations from a string
  *
  * The function allocates and fills a rte_kvargs structure from a given
- * string whose format is key1=value1;key2=value2;...
+ * string whose format is key1=value1,key2=value2,...
  *
  * The structure can be freed with rte_kvargs_free().
  *
-- 
1.8.5.3



More information about the dev mailing list