DPDK patches and discussions
 help / color / mirror / Atom feed
From: Gaetan Rivet <gaetan.rivet@6wind.com>
To: dev@dpdk.org
Cc: Gaetan Rivet <gaetan.rivet@6wind.com>
Subject: [dpdk-dev] [PATCH v5 16/19] devargs: introduce cleaner parsing helper
Date: Wed, 21 Jun 2017 01:35:50 +0200	[thread overview]
Message-ID: <fdcfcf11926cea553889562cf62e254f03cbfef6.1498001626.git.gaetan.rivet@6wind.com> (raw)
In-Reply-To: <cover.1498001626.git.gaetan.rivet@6wind.com>
In-Reply-To: <cover.1498001626.git.gaetan.rivet@6wind.com>

Introduce a more versatile helper to parse device strings. This
helper expects a generic rte_devargs structure as storage in order not
to require any API changes in the future, should this structure be
updated.

The old equivalent function is thus being deprecated, as its API does
not allow to accompany current rte_devargs evolutions.

A deprecation notice is issued.

This new helper will parse bus information as well as device name and
device parameters. It does not allocate an rte_devargs structure and
expects one to be given as input.

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
---
 doc/guides/rel_notes/deprecation.rst        |  5 ++
 lib/librte_eal/common/eal_common_devargs.c  | 91 ++++++++++++++++++++---------
 lib/librte_eal/common/include/rte_devargs.h | 20 +++++++
 3 files changed, 90 insertions(+), 26 deletions(-)

diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst
index 1786a59..fb95ced 100644
--- a/doc/guides/rel_notes/deprecation.rst
+++ b/doc/guides/rel_notes/deprecation.rst
@@ -105,3 +105,8 @@ Deprecation Notices
   The non-"do-sig" versions of the hash tables will be removed
   (including the ``signature_offset`` parameter)
   and the "do-sig" versions renamed accordingly.
+
+* eal: the following function is deprecated starting from 17.08 and will
+  be removed in 17.11:
+
+  - ``rte_eal_parse_devargs_str``, replaced by ``rte_eal_devargs_parse``
diff --git a/lib/librte_eal/common/eal_common_devargs.c b/lib/librte_eal/common/eal_common_devargs.c
index 321a62d..f2e11f9 100644
--- a/lib/librte_eal/common/eal_common_devargs.c
+++ b/lib/librte_eal/common/eal_common_devargs.c
@@ -77,6 +77,66 @@ rte_eal_parse_devargs_str(const char *devargs_str,
 	return 0;
 }
 
+int
+rte_eal_devargs_parse(const char *dev,
+		      struct rte_devargs *da)
+{
+	struct rte_bus *bus;
+	const char *c;
+	const size_t maxlen = sizeof(da->name);
+	size_t i;
+
+	if ((dev) == NULL || (da) == NULL)
+		return -EINVAL;
+	c = dev;
+	/* Retrieve eventual bus info */
+	bus = rte_bus_from_name(dev);
+	if (bus) {
+		i = strlen(bus->name);
+		if (dev[i] == '\0') {
+			fprintf(stderr, "WARNING: device name matches a bus name.\n");
+			bus = NULL;
+		} else if (rte_bus_from_dev(dev)) {
+			/* false positive on bus name. */
+			bus = NULL;
+		} else {
+			c = &dev[i+1];
+		}
+	}
+	/* Store device name */
+	i = 0;
+	while (c[i] != '\0' && c[i] != ',') {
+		da->name[i] = c[i];
+		i++;
+		if (i == maxlen) {
+			fprintf(stderr, "WARNING: Parsing \"%s\": device name should be shorter than %zu\n",
+				dev, maxlen);
+			da->name[i-1] = '\0';
+			return -EINVAL;
+		}
+	}
+	da->name[i] = '\0';
+	if (!bus) {
+		bus = rte_bus_from_dev(da->name);
+		if (!bus) {
+			fprintf(stderr, "ERROR: failed to parse bus info from device \"%s\"\n",
+				da->name);
+			return -EFAULT;
+		}
+	}
+	da->bus = bus;
+	/* Parse eventual device arguments */
+	if (c[i] == ',')
+		da->args = strdup(&c[i+1]);
+	else
+		da->args = strdup("");
+	if (da->args == NULL) {
+		fprintf(stderr, "ERROR: not enough memory to parse arguments\n");
+		return -ENOMEM;
+	}
+	return 0;
+}
+
 /* store a whitelist parameter for later parsing */
 int
 rte_eal_devargs_add(enum rte_devtype devtype, const char *devargs_str)
@@ -84,35 +144,16 @@ rte_eal_devargs_add(enum rte_devtype devtype, const char *devargs_str)
 	struct rte_devargs *devargs = NULL;
 	const char *dev = devargs_str;
 	struct rte_bus *bus;
-	char *buf = NULL;
-	int ret;
 
-	/* use malloc instead of rte_malloc as it's called early at init */
-	devargs = malloc(sizeof(*devargs));
+	/* use calloc instead of rte_zmalloc as it's called early at init */
+	devargs = calloc(1, sizeof(*devargs));
 	if (devargs == NULL)
 		goto fail;
 
-	memset(devargs, 0, sizeof(*devargs));
-	devargs->type = devtype;
-
-	bus = rte_bus_from_name(dev);
-	if (bus) {
-		dev += strlen(bus->name) + 1;
-	} else {
-		bus = rte_bus_from_dev(dev);
-		if (!bus) {
-			fprintf(stderr, "ERROR: failed to parse bus info from device declaration\n");
-			goto fail;
-		}
-	}
-	devargs->bus = bus;
-	if (rte_eal_parse_devargs_str(dev, &buf, &devargs->args))
-		goto fail;
-
-	/* save device name. */
-	ret = snprintf(devargs->name, sizeof(devargs->name), "%s", buf);
-	if (ret < 0 || ret >= (int)sizeof(devargs->name))
+	if (rte_eal_devargs_parse(dev, devargs))
 		goto fail;
+	devargs->type = devtype;
+	bus = devargs->bus;
 	if (devargs->type == RTE_DEVTYPE_WHITELISTED) {
 		if (bus->conf.scan_mode == RTE_BUS_SCAN_UNDEFINED) {
 			bus->conf.scan_mode = RTE_BUS_SCAN_WHITELIST;
@@ -129,12 +170,10 @@ rte_eal_devargs_add(enum rte_devtype devtype, const char *devargs_str)
 		}
 	}
 
-	free(buf);
 	TAILQ_INSERT_TAIL(&devargs_list, devargs, next);
 	return 0;
 
 fail:
-	free(buf);
 	if (devargs) {
 		free(devargs->args);
 		free(devargs);
diff --git a/lib/librte_eal/common/include/rte_devargs.h b/lib/librte_eal/common/include/rte_devargs.h
index 6e9e134..2ab8864 100644
--- a/lib/librte_eal/common/include/rte_devargs.h
+++ b/lib/librte_eal/common/include/rte_devargs.h
@@ -119,6 +119,26 @@ int rte_eal_parse_devargs_str(const char *devargs_str,
 				char **drvname, char **drvargs);
 
 /**
+ * Parse a device string.
+ *
+ * Verify that a bus is capable of handling the device passed
+ * in argument. Store which bus will handle the device, its name
+ * and the eventual device parameters.
+ *
+ * @param dev
+ *   The device declaration string.
+ * @param da
+ *   The devargs structure holding the device information.
+ *
+ * @return
+ *   - 0 on success.
+ *   - Negative errno on error.
+ */
+int
+rte_eal_devargs_parse(const char *dev,
+		      struct rte_devargs *da);
+
+/**
  * Add a device to the user device list
  *
  * For PCI devices, the format of arguments string is "PCI_ADDR" or
-- 
2.1.4

  parent reply	other threads:[~2017-06-20 23:36 UTC|newest]

Thread overview: 145+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-24 15:14 [dpdk-dev] [PATCH 00/14] Generic devargs parsing Gaetan Rivet
2017-05-24 15:14 ` [dpdk-dev] [PATCH 01/14] net/bonding: properly reference PCI header Gaetan Rivet
2017-05-24 15:14 ` [dpdk-dev] [PATCH 02/14] net/bnxt: " Gaetan Rivet
2017-05-24 15:14 ` [dpdk-dev] [PATCH 03/14] net/mlx5: " Gaetan Rivet
2017-05-24 15:14 ` [dpdk-dev] [PATCH 04/14] net/e1000: " Gaetan Rivet
2017-05-24 15:14 ` [dpdk-dev] [PATCH 05/14] net/ixgbe: " Gaetan Rivet
2017-05-24 15:14 ` [dpdk-dev] [PATCH 06/14] net/sfc: " Gaetan Rivet
2017-05-24 15:14 ` [dpdk-dev] [PATCH 07/14] app/testpmd: " Gaetan Rivet
2017-05-24 15:14 ` [dpdk-dev] [PATCH 08/14] dev: device kernel module is a device attribute Gaetan Rivet
2017-05-24 15:14 ` [dpdk-dev] [PATCH 09/14] bus: introduce bus scan policies Gaetan Rivet
2017-05-24 15:14 ` [dpdk-dev] [PATCH 10/14] devargs: parse bus policies Gaetan Rivet
2017-05-24 15:14 ` [dpdk-dev] [PATCH 11/14] devargs: generic device representation Gaetan Rivet
2017-05-24 15:14 ` [dpdk-dev] [PATCH 12/14] net/virtio: do not reference device type Gaetan Rivet
2017-05-24 15:14 ` [dpdk-dev] [PATCH 13/14] devargs: generic device types Gaetan Rivet
2017-05-24 15:14 ` [dpdk-dev] [PATCH 14/14] devargs: introduce cleaner parsing helper Gaetan Rivet
2017-05-24 16:16 ` [dpdk-dev] [PATCH v2 00/14] Generic devargs parsing Gaetan Rivet
2017-05-24 16:16   ` [dpdk-dev] [PATCH v2 01/14] net/bonding: properly reference PCI header Gaetan Rivet
2017-05-24 16:16   ` [dpdk-dev] [PATCH v2 02/14] net/bnxt: " Gaetan Rivet
2017-05-24 16:16   ` [dpdk-dev] [PATCH v2 03/14] net/mlx5: " Gaetan Rivet
2017-05-24 16:16   ` [dpdk-dev] [PATCH v2 04/14] net/e1000: " Gaetan Rivet
2017-05-24 16:16   ` [dpdk-dev] [PATCH v2 05/14] net/ixgbe: " Gaetan Rivet
2017-05-24 16:16   ` [dpdk-dev] [PATCH v2 06/14] net/sfc: " Gaetan Rivet
2017-05-24 16:16   ` [dpdk-dev] [PATCH v2 07/14] app/testpmd: " Gaetan Rivet
2017-05-24 16:16   ` [dpdk-dev] [PATCH v2 08/14] dev: device kernel module is a device attribute Gaetan Rivet
2017-05-24 16:16   ` [dpdk-dev] [PATCH v2 09/14] bus: introduce bus scan policies Gaetan Rivet
2017-05-24 16:16   ` [dpdk-dev] [PATCH v2 10/14] devargs: parse bus policies Gaetan Rivet
2017-05-24 16:16   ` [dpdk-dev] [PATCH v2 11/14] devargs: generic device representation Gaetan Rivet
2017-05-24 16:16   ` [dpdk-dev] [PATCH v2 12/14] net/virtio: do not reference device type Gaetan Rivet
2017-05-24 16:16   ` [dpdk-dev] [PATCH v2 13/14] devargs: generic device types Gaetan Rivet
2017-05-24 16:16   ` [dpdk-dev] [PATCH v2 14/14] devargs: introduce cleaner parsing helper Gaetan Rivet
2017-06-01 10:10   ` [dpdk-dev] [PATCH v3 00/14] Generic devargs parsing Gaetan Rivet
2017-06-01 10:10     ` [dpdk-dev] [PATCH v3 01/14] net/bonding: properly reference PCI header Gaetan Rivet
2017-06-01 10:10     ` [dpdk-dev] [PATCH v3 02/14] net/bnxt: " Gaetan Rivet
2017-06-01 10:10     ` [dpdk-dev] [PATCH v3 03/14] net/mlx5: " Gaetan Rivet
2017-06-01 10:10     ` [dpdk-dev] [PATCH v3 04/14] net/e1000: " Gaetan Rivet
2017-06-01 10:10     ` [dpdk-dev] [PATCH v3 05/14] net/ixgbe: " Gaetan Rivet
2017-06-01 10:10     ` [dpdk-dev] [PATCH v3 06/14] net/sfc: " Gaetan Rivet
2017-06-01 10:10     ` [dpdk-dev] [PATCH v3 07/14] app/testpmd: " Gaetan Rivet
2017-06-01 10:10     ` [dpdk-dev] [PATCH v3 08/14] dev: device kernel module is a device attribute Gaetan Rivet
2017-06-01 10:10     ` [dpdk-dev] [PATCH v3 09/14] bus: introduce bus scan policies Gaetan Rivet
2017-06-01 10:10     ` [dpdk-dev] [PATCH v3 10/14] devargs: parse bus policies Gaetan Rivet
2017-06-01 10:10     ` [dpdk-dev] [PATCH v3 11/14] devargs: generic device representation Gaetan Rivet
2017-06-01 10:10     ` [dpdk-dev] [PATCH v3 12/14] net/virtio: do not reference device type Gaetan Rivet
2017-06-01 10:10     ` [dpdk-dev] [PATCH v3 13/14] devargs: generic device types Gaetan Rivet
2017-06-01 10:10     ` [dpdk-dev] [PATCH v3 14/14] devargs: introduce cleaner parsing helper Gaetan Rivet
2017-06-07 23:56     ` [dpdk-dev] [PATCH v4 00/19] Generic devargs parsing Gaetan Rivet
2017-06-07 23:56       ` [dpdk-dev] [PATCH v4 01/19] net/bonding: properly reference PCI header Gaetan Rivet
2017-06-07 23:56       ` [dpdk-dev] [PATCH v4 02/19] net/bnxt: " Gaetan Rivet
2017-06-07 23:56       ` [dpdk-dev] [PATCH v4 03/19] net/mlx5: " Gaetan Rivet
2017-06-07 23:56       ` [dpdk-dev] [PATCH v4 04/19] net/e1000: " Gaetan Rivet
2017-06-07 23:56       ` [dpdk-dev] [PATCH v4 05/19] net/ixgbe: " Gaetan Rivet
2017-06-14  9:33         ` Dai, Wei
2017-06-14  9:48           ` Gaëtan Rivet
2017-06-07 23:56       ` [dpdk-dev] [PATCH v4 06/19] net/sfc: " Gaetan Rivet
2017-06-07 23:56       ` [dpdk-dev] [PATCH v4 07/19] app/testpmd: " Gaetan Rivet
2017-06-07 23:56       ` [dpdk-dev] [PATCH v4 08/19] test: " Gaetan Rivet
2017-06-07 23:56       ` [dpdk-dev] [PATCH v4 09/19] dev: device kernel module is a device attribute Gaetan Rivet
2017-06-07 23:56       ` [dpdk-dev] [PATCH v4 10/19] bus: introduce bus scan policies Gaetan Rivet
2017-06-07 23:56       ` [dpdk-dev] [PATCH v4 11/19] devargs: parse bus policies Gaetan Rivet
2017-06-07 23:56       ` [dpdk-dev] [PATCH v4 12/19] devargs: generic device representation Gaetan Rivet
2017-06-07 23:56       ` [dpdk-dev] [PATCH v4 13/19] pci: update device name Gaetan Rivet
2017-06-07 23:57       ` [dpdk-dev] [PATCH v4 14/19] net/virtio: do not reference device type Gaetan Rivet
2017-06-07 23:57       ` [dpdk-dev] [PATCH v4 15/19] devargs: generic device types Gaetan Rivet
2017-06-07 23:57       ` [dpdk-dev] [PATCH v4 16/19] devargs: introduce cleaner parsing helper Gaetan Rivet
2017-06-07 23:57       ` [dpdk-dev] [PATCH v4 17/19] devargs: clone function Gaetan Rivet
2017-06-07 23:57       ` [dpdk-dev] [PATCH v4 18/19] devargs: remove function Gaetan Rivet
2017-06-07 23:57       ` [dpdk-dev] [PATCH v4 19/19] eal: change whitelist / blacklist command line doc Gaetan Rivet
2017-06-20 23:35       ` [dpdk-dev] [PATCH v5 00/19] Generic devargs parsing Gaetan Rivet
2017-06-20 23:35         ` [dpdk-dev] [PATCH v5 01/19] net/bonding: properly reference PCI header Gaetan Rivet
2017-06-20 23:35         ` [dpdk-dev] [PATCH v5 02/19] net/bnxt: " Gaetan Rivet
2017-06-20 23:35         ` [dpdk-dev] [PATCH v5 03/19] net/mlx5: " Gaetan Rivet
2017-06-20 23:35         ` [dpdk-dev] [PATCH v5 04/19] net/e1000: " Gaetan Rivet
2017-06-20 23:35         ` [dpdk-dev] [PATCH v5 05/19] net/ixgbe: " Gaetan Rivet
2017-06-20 23:35         ` [dpdk-dev] [PATCH v5 06/19] net/sfc: " Gaetan Rivet
2017-06-20 23:35         ` [dpdk-dev] [PATCH v5 07/19] app/testpmd: " Gaetan Rivet
2017-06-20 23:35         ` [dpdk-dev] [PATCH v5 08/19] test: " Gaetan Rivet
2017-06-20 23:35         ` [dpdk-dev] [PATCH v5 09/19] dev: device kernel module is a device attribute Gaetan Rivet
2017-06-20 23:35         ` [dpdk-dev] [PATCH v5 10/19] bus: introduce bus scan policies Gaetan Rivet
2017-07-04 23:01           ` Thomas Monjalon
2017-06-20 23:35         ` [dpdk-dev] [PATCH v5 11/19] devargs: parse bus policies Gaetan Rivet
2017-06-20 23:35         ` [dpdk-dev] [PATCH v5 12/19] devargs: generic device representation Gaetan Rivet
2017-06-28  7:44           ` Thomas Monjalon
2017-06-28  8:05             ` Gaëtan Rivet
2017-06-28 14:18           ` [dpdk-dev] [PATCH] examples/ethtool: explicit PCI header dependency Thomas Monjalon
2017-06-20 23:35         ` [dpdk-dev] [PATCH v5 13/19] pci: update device name Gaetan Rivet
2017-06-20 23:35         ` [dpdk-dev] [PATCH v5 14/19] net/virtio: do not reference device type Gaetan Rivet
2017-06-20 23:35         ` [dpdk-dev] [PATCH v5 15/19] devargs: generic device types Gaetan Rivet
2017-06-20 23:35         ` Gaetan Rivet [this message]
2017-06-27 22:19           ` [dpdk-dev] [PATCH v5 16/19] devargs: introduce cleaner parsing helper Thomas Monjalon
2017-06-27 23:46           ` Wiles, Keith
2017-07-04 21:50             ` Gaëtan Rivet
2017-06-20 23:35         ` [dpdk-dev] [PATCH v5 17/19] devargs: clone function Gaetan Rivet
2017-06-20 23:35         ` [dpdk-dev] [PATCH v5 18/19] devargs: remove function Gaetan Rivet
2017-06-20 23:35         ` [dpdk-dev] [PATCH v5 19/19] eal: change whitelist / blacklist command line doc Gaetan Rivet
2017-06-26 14:58           ` Mcnamara, John
2017-07-04 23:56         ` [dpdk-dev] [PATCH v6 00/19] Generic devargs parsing Gaetan Rivet
2017-07-04 23:56           ` [dpdk-dev] [PATCH v6 01/19] net/bonding: properly reference PCI header Gaetan Rivet
2017-07-04 23:56           ` [dpdk-dev] [PATCH v6 02/19] net/bnxt: " Gaetan Rivet
2017-07-04 23:56           ` [dpdk-dev] [PATCH v6 03/19] net/mlx5: " Gaetan Rivet
2017-07-04 23:56           ` [dpdk-dev] [PATCH v6 04/19] net/e1000: " Gaetan Rivet
2017-07-04 23:56           ` [dpdk-dev] [PATCH v6 05/19] net/ixgbe: " Gaetan Rivet
2017-07-04 23:56           ` [dpdk-dev] [PATCH v6 06/19] net/sfc: " Gaetan Rivet
2017-07-04 23:56           ` [dpdk-dev] [PATCH v6 07/19] app/testpmd: " Gaetan Rivet
2017-07-04 23:56           ` [dpdk-dev] [PATCH v6 08/19] test: " Gaetan Rivet
2017-07-04 23:56           ` [dpdk-dev] [PATCH v6 09/19] dev: device kernel module is a device attribute Gaetan Rivet
2017-07-04 23:56           ` [dpdk-dev] [PATCH v6 10/19] bus: introduce bus scan policies Gaetan Rivet
2017-07-04 23:56           ` [dpdk-dev] [PATCH v6 11/19] devargs: parse bus policies Gaetan Rivet
2017-07-04 23:56           ` [dpdk-dev] [PATCH v6 12/19] devargs: generic device representation Gaetan Rivet
2017-07-04 23:56           ` [dpdk-dev] [PATCH v6 13/19] pci: update device name Gaetan Rivet
2017-07-04 23:56           ` [dpdk-dev] [PATCH v6 14/19] net/virtio: do not reference device type Gaetan Rivet
2017-07-05  0:09             ` Gaëtan Rivet
2017-07-04 23:56           ` [dpdk-dev] [PATCH v6 15/19] devargs: generic device types Gaetan Rivet
2017-07-04 23:56           ` [dpdk-dev] [PATCH v6 16/19] devargs: introduce cleaner parsing helper Gaetan Rivet
2017-07-04 23:56           ` [dpdk-dev] [PATCH v6 17/19] devargs: clone function Gaetan Rivet
2017-07-04 23:56           ` [dpdk-dev] [PATCH v6 18/19] devargs: remove function Gaetan Rivet
2017-07-04 23:56           ` [dpdk-dev] [PATCH v6 19/19] eal: change whitelist / blacklist command line doc Gaetan Rivet
2017-07-05  0:23             ` Thomas Monjalon
2017-07-05 10:27             ` Mcnamara, John
2017-07-05  0:32           ` [dpdk-dev] [PATCH v6 00/19] Generic devargs parsing Thomas Monjalon
2017-07-05  7:46             ` Gaëtan Rivet
2017-07-07  0:04           ` [dpdk-dev] [PATCH v7 00/17] " Gaetan Rivet
2017-07-07  0:04             ` [dpdk-dev] [PATCH v7 01/17] net/bonding: properly reference PCI header Gaetan Rivet
2017-07-07  0:04             ` [dpdk-dev] [PATCH v7 02/17] net/bnxt: " Gaetan Rivet
2017-07-07  0:04             ` [dpdk-dev] [PATCH v7 03/17] net/mlx5: " Gaetan Rivet
2017-07-07  0:04             ` [dpdk-dev] [PATCH v7 04/17] net/e1000: " Gaetan Rivet
2017-07-07  0:04             ` [dpdk-dev] [PATCH v7 05/17] net/ixgbe: " Gaetan Rivet
2017-07-07  0:04             ` [dpdk-dev] [PATCH v7 06/17] net/sfc: " Gaetan Rivet
2017-07-07  0:04             ` [dpdk-dev] [PATCH v7 07/17] app/testpmd: " Gaetan Rivet
2017-07-07  0:04             ` [dpdk-dev] [PATCH v7 08/17] test: " Gaetan Rivet
2017-07-07  0:04             ` [dpdk-dev] [PATCH v7 09/17] examples/ethtool: " Gaetan Rivet
2017-07-07  0:04             ` [dpdk-dev] [PATCH v7 10/17] dev: device kernel module is a device attribute Gaetan Rivet
2017-07-07  0:04             ` [dpdk-dev] [PATCH v7 11/17] bus: introduce bus scan policies Gaetan Rivet
2017-07-07  0:04             ` [dpdk-dev] [PATCH v7 12/17] devargs: parse bus policies Gaetan Rivet
2017-07-09 14:50               ` Thomas Monjalon
2017-07-07  0:04             ` [dpdk-dev] [PATCH v7 13/17] devargs: generic device representation Gaetan Rivet
2017-07-07  0:04             ` [dpdk-dev] [PATCH v7 14/17] net/virtio: do not reference device type Gaetan Rivet
2017-07-07  0:04             ` [dpdk-dev] [PATCH v7 15/17] devargs: generic device types Gaetan Rivet
2017-07-07  0:04             ` [dpdk-dev] [PATCH v7 16/17] devargs: introduce cleaner parsing helper Gaetan Rivet
2017-07-07  0:04             ` [dpdk-dev] [PATCH v7 17/17] eal: change whitelist / blacklist command line doc Gaetan Rivet
2017-07-08 22:25               ` Thomas Monjalon
2017-07-08 22:28             ` [dpdk-dev] [PATCH v7 00/17] Generic devargs parsing Thomas Monjalon
2017-07-09  8:37               ` Jan Blunck
2017-07-09 10:17                 ` Thomas Monjalon
2017-07-09 11:16                   ` Jan Blunck
2017-07-09 11:29                     ` Gaëtan Rivet

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=fdcfcf11926cea553889562cf62e254f03cbfef6.1498001626.git.gaetan.rivet@6wind.com \
    --to=gaetan.rivet@6wind.com \
    --cc=dev@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).