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