DPDK patches and discussions
 help / color / mirror / Atom feed
From: "Gaëtan Rivet" <gaetan.rivet@6wind.com>
To: Kevin Laatz <kevin.laatz@intel.com>
Cc: dev@dpdk.org, harry.van.haaren@intel.com,
	stephen@networkplumber.org, shreyansh.jain@nxp.com,
	thomas@monjalon.net, mattias.ronnblom@ericsson.com,
	bruce.richardson@intel.com
Subject: Re: [dpdk-dev] [PATCH v5 01/13] eal: add param register infrastructure
Date: Wed, 17 Oct 2018 17:56:02 +0200	[thread overview]
Message-ID: <20181017155602.kz2kpxx76cwutnbg@bidouze.vm.6wind.com> (raw)
In-Reply-To: <20181016155802.2067-2-kevin.laatz@intel.com>

Some suggestions,

On Tue, Oct 16, 2018 at 04:57:50PM +0100, Kevin Laatz wrote:
> This commit adds infrastructure to EAL that allows an application to
> register it's init function with EAL. This allows libraries to be
> initialized at the end of EAL init.
> 
> This infrastructure allows libraries that depend on EAL to be initialized
> as part of EAL init, removing circular dependency issues.
> 
> Signed-off-by: Kevin Laatz <kevin.laatz@intel.com>
> Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
> ---
>  lib/librte_eal/bsdapp/eal/Makefile        |  1 +
>  lib/librte_eal/bsdapp/eal/eal.c           | 18 +++++-
>  lib/librte_eal/common/Makefile            |  1 +
>  lib/librte_eal/common/include/rte_param.h | 91 +++++++++++++++++++++++++++++++
>  lib/librte_eal/common/meson.build         |  2 +
>  lib/librte_eal/common/rte_param.c         | 47 ++++++++++++++++
>  lib/librte_eal/linuxapp/eal/Makefile      |  1 +
>  lib/librte_eal/linuxapp/eal/eal.c         | 18 +++++-
>  lib/librte_eal/rte_eal_version.map        |  1 +
>  9 files changed, 178 insertions(+), 2 deletions(-)
>  create mode 100644 lib/librte_eal/common/include/rte_param.h
>  create mode 100644 lib/librte_eal/common/rte_param.c
> 
> diff --git a/lib/librte_eal/bsdapp/eal/Makefile b/lib/librte_eal/bsdapp/eal/Makefile
> index d27da3d..7f4fa7e 100644
> --- a/lib/librte_eal/bsdapp/eal/Makefile
> +++ b/lib/librte_eal/bsdapp/eal/Makefile
> @@ -66,6 +66,7 @@ SRCS-$(CONFIG_RTE_EXEC_ENV_BSDAPP) += malloc_elem.c
>  SRCS-$(CONFIG_RTE_EXEC_ENV_BSDAPP) += malloc_heap.c
>  SRCS-$(CONFIG_RTE_EXEC_ENV_BSDAPP) += malloc_mp.c
>  SRCS-$(CONFIG_RTE_EXEC_ENV_BSDAPP) += rte_keepalive.c
> +SRCS-$(CONFIG_RTE_EXEC_ENV_BSDAPP) += rte_param.c
>  SRCS-$(CONFIG_RTE_EXEC_ENV_BSDAPP) += rte_service.c
>  SRCS-$(CONFIG_RTE_EXEC_ENV_BSDAPP) += rte_reciprocal.c
>  
> diff --git a/lib/librte_eal/bsdapp/eal/eal.c b/lib/librte_eal/bsdapp/eal/eal.c
> index d7ae9d6..27b7afc 100644
> --- a/lib/librte_eal/bsdapp/eal/eal.c
> +++ b/lib/librte_eal/bsdapp/eal/eal.c
> @@ -42,6 +42,7 @@
>  #include <rte_devargs.h>
>  #include <rte_version.h>
>  #include <rte_vfio.h>
> +#include <rte_param.h>
>  #include <rte_atomic.h>
>  #include <malloc_heap.h>
>  
> @@ -414,12 +415,20 @@ eal_parse_args(int argc, char **argv)
>  	argvopt = argv;
>  	optind = 1;
>  	optreset = 1;
> +	opterr = 0;
>  
>  	while ((opt = getopt_long(argc, argvopt, eal_short_options,
>  				  eal_long_options, &option_index)) != EOF) {
>  
> -		/* getopt is not happy, stop right now */
> +		/*
> +		 * getopt didn't recognise the option, lets parse the
> +		 * registered options to see if the flag is valid
> +		 */
>  		if (opt == '?') {
> +			ret = rte_param_parse(argv[optind-1]);
> +			if (ret == 0)
> +				continue;
> +
>  			eal_usage(prgname);
>  			ret = -1;
>  			goto out;
> @@ -788,6 +797,13 @@ rte_eal_init(int argc, char **argv)
>  
>  	rte_eal_mcfg_complete();
>  
> +	/* Call each registered callback, if enabled */
> +	ret = rte_param_init();
> +	if (ret < 0) {
> +		rte_eal_init_alert("Callback failed\n");
> +		return -1;
> +	}
> +
>  	return fctret;
>  }
>  
> diff --git a/lib/librte_eal/common/Makefile b/lib/librte_eal/common/Makefile
> index cca6882..8def95a 100644
> --- a/lib/librte_eal/common/Makefile
> +++ b/lib/librte_eal/common/Makefile
> @@ -12,6 +12,7 @@ INC += rte_tailq.h rte_interrupts.h rte_alarm.h
>  INC += rte_string_fns.h rte_version.h
>  INC += rte_eal_memconfig.h rte_malloc_heap.h
>  INC += rte_hexdump.h rte_devargs.h rte_bus.h rte_dev.h rte_class.h
> +INC += rte_param.h
>  INC += rte_pci_dev_feature_defs.h rte_pci_dev_features.h
>  INC += rte_malloc.h rte_keepalive.h rte_time.h
>  INC += rte_service.h rte_service_component.h
> diff --git a/lib/librte_eal/common/include/rte_param.h b/lib/librte_eal/common/include/rte_param.h
> new file mode 100644
> index 0000000..a0635f7
> --- /dev/null
> +++ b/lib/librte_eal/common/include/rte_param.h
> @@ -0,0 +1,91 @@
> +/* SPDX-License-Identifier: BSD-3-Clause
> + * Copyright(c) 2018 Intel Corporation.
> + */
> +
> +#ifndef __INCLUDE_RTE_PARAM_H__
> +#define __INCLUDE_RTE_PARAM_H__
> +
> +/**
> + * @file
> + *
> + * This API introduces the ability to register callbacks with EAL. When
> + * registering a callback, the application also provides an option as part
> + * of the struct used to register. If the option is passed to EAL when
> + * running a DPDK application, the relevant callback will be called at the
> + * end of EAL init.  For example, passing --telemetry will make the
> + * telemetry init be called at the end of EAL init.
> + *
> + * The register API can be used to resolve circular dependency issues
> + * between EAL and the library. The library uses EAL but is also initialized by
> + * EAL. Hence, EAL depends on the init function of the library. The API
> + * introduced in rte_param allows us to register the library init with EAL
> + * (passing a function pointer) and avoid the circular dependency.

This API offers the ability to register options to the EAL command line
and map those options to functions, that will be executed at the end of
EAL initialization. These options will be available as part of the EAL
command line of applications and are dynamically managed.

This is used primarily by DPDK libraries offering command line options.
Currently, this API is limited to registering options without argument.

> + */
> +
> +#ifdef __cplusplus
> +extern "C" {
> +#endif
> +
> +typedef int (*rte_param_cb)(void);
> +
> +/*

   /**

> + * Structure containing parameters relating to the function being registered
> + * with EAL.

   Structure describing the EAL command line option being registered.

> + */
> +struct rte_param {

As said earlier, rte_option instead.

> +	TAILQ_ENTRY(rte_param) next; /** The next entry in the TAILQ*/
                                    ^ missing a '<' here for doxygen,
                                    and a space after TAILQ.

                                 /**< Next entry. */
                                    or
                                 /**< Next entry in the list. */

                                 Also reads better, TAILQ is
                                 implementation detail, not too useful
                                 in API doc.
                                 Also missing a period.

> +	char *eal_option;            /** The EAL option */
         *opt_str; /**< The option name. */

> +	rte_param_cb cb;             /** Function pointer of the callback */
                 cb; /**< Function called when the option is used. */
> +
> +	/**
> +	 * Enabled flag, should be 0 by default. This is set when the option
> +	 * for the callback is passed to EAL and determines if the callback is
> +	 * called or not.
> +	 */
> +	int enabled;
                 /**< Set when the option is used. */
> +};
> +
> +/**
> + * @internal Check if the passed option is valid

Check if option is registered.

> + *
> + * @param option
> + *  The option to be parsed
> + *
> + * @return
> + *  0 on success
> + * @return
> + *  -1 on fail
> + */
> +int
> +rte_param_parse(char *option);

This should probably be a const char *.
Also, internal functions must not be part of public headers.
Move the prototype to eal_private.h instead.

> +
> +/**
> + * @warning
> + * @b EXPERIMENTAL: this API may change without prior notice
> + *
> + * Register a function with EAL. Registering the function will enable the
> + * function to be called at the end of EAL init.
> + *
> + * @param reg_param
> + *  Structure containing various params used to register the function.
> + */

Register an option to the EAL command line.
When recognized, the associated function will
be executed at the end of EAL initialization.

The associated structure must be available the whole time
this option is registered (i.e. not stack memory)

@param option
   Structure describing the option to parse.

> +void __rte_experimental
> +rte_param_register(struct rte_param *reg_param);
> +
> +/**
> + * @internal Iterate through the registered params and call the callback for
> + * the enabled ones.

Iterate through registered options and execute the associated callback
if enabled.

> + *
> + * @return
> + *  0  on success
> + * @return
> + *  -1 on fail
> + */
> +int
> +rte_param_init(void);

This function prototype should be added to eal_private.h instead.

Maybe missing: rte_option_unregister, to be executed in .FINI, if a
plugin is unloaded.

> +
> +#ifdef __cplusplus
> +}
> +#endif
> +
> +#endif
> diff --git a/lib/librte_eal/common/meson.build b/lib/librte_eal/common/meson.build
> index b7fc984..4069e49 100644
> --- a/lib/librte_eal/common/meson.build
> +++ b/lib/librte_eal/common/meson.build
> @@ -33,6 +33,7 @@ common_sources = files(
>  	'malloc_mp.c',
>  	'rte_keepalive.c',
>  	'rte_malloc.c',
> +	'rte_param.c',
>  	'rte_reciprocal.c',
>  	'rte_service.c'
>  )
> @@ -70,6 +71,7 @@ common_headers = files(
>  	'include/rte_malloc_heap.h',
>  	'include/rte_memory.h',
>  	'include/rte_memzone.h',
> +	'include/rte_param.h',
>  	'include/rte_pci_dev_feature_defs.h',
>  	'include/rte_pci_dev_features.h',
>  	'include/rte_per_lcore.h',
> diff --git a/lib/librte_eal/common/rte_param.c b/lib/librte_eal/common/rte_param.c
> new file mode 100644
> index 0000000..317e371
> --- /dev/null
> +++ b/lib/librte_eal/common/rte_param.c
> @@ -0,0 +1,47 @@
> +/* SPDX-License-Identifier: BSD-3-Clause
> + * Copyright(c) 2018 Intel Corporation.
> + */
> +
> +#include <unistd.h>
> +#include <string.h>
> +
> +#include <rte_eal.h>
> +#include <rte_param.h>
> +
> +TAILQ_HEAD(rte_param_list, rte_param);
> +
> +struct rte_param_list rte_param_list =
> +	TAILQ_HEAD_INITIALIZER(rte_param_list);
> +
> +static struct rte_param *param;
> +
> +int
> +rte_param_parse(char *option)
> +{
> +	/* Check if the option is in the registered inits */
> +	TAILQ_FOREACH(param, &rte_param_list, next) {
> +		if (strcmp(option, param->eal_option) == 0) {
> +			param->enabled = 1;
> +			return 0;
> +		}
> +	}
> +
> +	return -1;
> +}
> +
> +void __rte_experimental
> +rte_param_register(struct rte_param *reg_param)
> +{
> +	TAILQ_INSERT_HEAD(&rte_param_list, reg_param, next);

What happens when an option already exists in the list?

> +}
> +
> +int
> +rte_param_init(void)
> +{
> +	TAILQ_FOREACH(param, &rte_param_list, next) {
> +		if (param->enabled)
> +			param->cb();
> +	}
> +
> +	return 0;
> +}
> diff --git a/lib/librte_eal/linuxapp/eal/Makefile b/lib/librte_eal/linuxapp/eal/Makefile
> index 5c16bc4..2bf8b24 100644
> --- a/lib/librte_eal/linuxapp/eal/Makefile
> +++ b/lib/librte_eal/linuxapp/eal/Makefile
> @@ -74,6 +74,7 @@ SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += malloc_elem.c
>  SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += malloc_heap.c
>  SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += malloc_mp.c
>  SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += rte_keepalive.c
> +SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += rte_param.c
>  SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += rte_service.c
>  SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += rte_reciprocal.c
>  
> diff --git a/lib/librte_eal/linuxapp/eal/eal.c b/lib/librte_eal/linuxapp/eal/eal.c
> index 4a55d3b..e28562b 100644
> --- a/lib/librte_eal/linuxapp/eal/eal.c
> +++ b/lib/librte_eal/linuxapp/eal/eal.c
> @@ -48,6 +48,7 @@
>  #include <rte_atomic.h>
>  #include <malloc_heap.h>
>  #include <rte_vfio.h>
> +#include <rte_param.h>
>  
>  #include "eal_private.h"
>  #include "eal_thread.h"
> @@ -600,12 +601,20 @@ eal_parse_args(int argc, char **argv)
>  
>  	argvopt = argv;
>  	optind = 1;
> +	opterr = 0;
>  
>  	while ((opt = getopt_long(argc, argvopt, eal_short_options,
>  				  eal_long_options, &option_index)) != EOF) {
>  
> -		/* getopt is not happy, stop right now */
> +		/*
> +		 * getopt didn't recognise the option, lets parse the
> +		 * registered options to see if the flag is valid
> +		 */
>  		if (opt == '?') {
> +			ret = rte_param_parse(argv[optind-1]);
> +			if (ret == 0)
> +				continue;
> +
>  			eal_usage(prgname);
>  			ret = -1;
>  			goto out;
> @@ -1071,6 +1080,13 @@ rte_eal_init(int argc, char **argv)
>  
>  	rte_eal_mcfg_complete();
>  
> +	/* Call each registered callback, if enabled */
> +	ret = rte_param_init();
> +	if (ret < 0) {
> +		rte_eal_init_alert("Callback failed\n");

It would be better to be able to know which function failed
and why. "Callback failed" is not helpful to the user.
Maybe rte_option_init() return value should be expanded to allow
for error string, error value to be passed, that could come from the
library itself, or simply printing the option name that is the source of
the error.

> +		return -1;
> +	}
> +
>  	return fctret;
>  }
>  
> diff --git a/lib/librte_eal/rte_eal_version.map b/lib/librte_eal/rte_eal_version.map
> index 73282bb..ccfb8a2 100644
> --- a/lib/librte_eal/rte_eal_version.map
> +++ b/lib/librte_eal/rte_eal_version.map
> @@ -341,6 +341,7 @@ EXPERIMENTAL {
>  	rte_mp_request_sync;
>  	rte_mp_request_async;
>  	rte_mp_sendmsg;
> +	rte_param_register;
>  	rte_service_lcore_attr_get;
>  	rte_service_lcore_attr_reset_all;
>  	rte_service_may_be_active;
> -- 
> 2.9.5
> 

Best regards,
-- 
Gaëtan Rivet
6WIND

  parent reply	other threads:[~2018-10-17 15:56 UTC|newest]

Thread overview: 219+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-23 12:08 [dpdk-dev] [PATCH 00/11] introduce telemetry library Ciara Power
2018-08-23 12:08 ` [dpdk-dev] [PATCH 01/11] telemetry: initial telemetry infrastructure Ciara Power
2018-08-23 23:17   ` Stephen Hemminger
2018-08-23 23:17   ` Stephen Hemminger
2018-08-23 23:18   ` Stephen Hemminger
2018-08-23 23:19   ` Stephen Hemminger
2018-08-23 23:22   ` Stephen Hemminger
2018-08-28 17:12     ` Van Haaren, Harry
2018-08-24 13:03   ` Shreyansh Jain
2018-08-28 16:50     ` Van Haaren, Harry
2018-08-28 11:46   ` Gaëtan Rivet
2018-08-28 16:54     ` Van Haaren, Harry
2018-08-29  8:23       ` Gaëtan Rivet
2018-08-23 12:08 ` [dpdk-dev] [PATCH 02/11] telemetry: add initial connection socket Ciara Power
2018-08-28 16:40   ` Gaëtan Rivet
2018-08-28 17:03     ` Van Haaren, Harry
2018-09-07  9:48   ` Burakov, Anatoly
2018-08-23 12:08 ` [dpdk-dev] [PATCH 03/11] telemetry: add client feature and sockets Ciara Power
2018-08-23 23:27   ` Stephen Hemminger
2018-08-28 15:26     ` Hunt, David
2018-08-28 17:09       ` Van Haaren, Harry
2018-08-23 12:08 ` [dpdk-dev] [PATCH 04/11] telemetry: add parser for client socket messages Ciara Power
2018-08-30 23:57   ` Gaëtan Rivet
2018-08-23 12:08 ` [dpdk-dev] [PATCH 05/11] telemetry: update metrics before sending stats Ciara Power
2018-08-23 12:08 ` [dpdk-dev] [PATCH 06/11] telemetry: format json response when " Ciara Power
2018-08-23 12:08 ` [dpdk-dev] [PATCH 07/11] telemetry: add tests for telemetry api Ciara Power
2018-08-23 23:15   ` Stephen Hemminger
2018-08-23 12:08 ` [dpdk-dev] [PATCH 08/11] telemetry: add vdev kvargs for selftest Ciara Power
2018-08-23 12:08 ` [dpdk-dev] [PATCH 09/11] doc: add telemetry documentation Ciara Power
2018-09-25  8:53   ` Kovacevic, Marko
2018-08-23 12:08 ` [dpdk-dev] [PATCH 10/11] usertools: add client python script for telemetry Ciara Power
2018-08-23 12:08 ` [dpdk-dev] [PATCH 11/11] telemetry: add collectd plugin patch Ciara Power
2018-09-18  9:52   ` Thomas Monjalon
2018-09-19 11:09     ` Laatz, Kevin
2018-10-03 17:36 ` [dpdk-dev] [PATCH v2 00/10] introduce telemetry library Kevin Laatz
2018-10-03 17:36   ` [dpdk-dev] [PATCH v2 01/10] telemetry: initial telemetry infrastructure Kevin Laatz
2018-10-04 14:13     ` Gaëtan Rivet
2018-10-03 17:36   ` [dpdk-dev] [PATCH v2 02/10] telemetry: add initial connection socket Kevin Laatz
2018-10-03 18:40     ` Mattias Rönnblom
2018-10-03 19:36       ` Thomas Monjalon
2018-10-03 19:49         ` Mattias Rönnblom
2018-10-03 17:36   ` [dpdk-dev] [PATCH v2 03/10] telemetry: add client feature and sockets Kevin Laatz
2018-10-03 19:06     ` Mattias Rönnblom
2018-10-03 17:36   ` [dpdk-dev] [PATCH v2 04/10] telemetry: add parser for client socket messages Kevin Laatz
2018-10-03 17:36   ` [dpdk-dev] [PATCH v2 05/10] telemetry: update metrics before sending stats Kevin Laatz
2018-10-03 17:36   ` [dpdk-dev] [PATCH v2 06/10] telemetry: format json response when " Kevin Laatz
2018-10-03 17:36   ` [dpdk-dev] [PATCH v2 07/10] telemetry: add tests for telemetry api Kevin Laatz
2018-10-03 17:36   ` [dpdk-dev] [PATCH v2 08/10] telemetry: add ability to disable selftest Kevin Laatz
2018-10-03 17:36   ` [dpdk-dev] [PATCH v2 09/10] doc: add telemetry documentation Kevin Laatz
2018-10-03 17:36   ` [dpdk-dev] [PATCH v2 10/10] usertools: add client python script for telemetry Kevin Laatz
2018-10-04 13:00   ` [dpdk-dev] [PATCH v2 00/10] introduce telemetry library Van Haaren, Harry
2018-10-04 13:25   ` Van Haaren, Harry
2018-10-04 15:16     ` Gaëtan Rivet
2018-10-04 15:53     ` Thomas Monjalon
2018-10-05 22:05       ` Gaëtan Rivet
2018-10-09 10:33       ` Van Haaren, Harry
2018-10-09 11:41         ` Thomas Monjalon
2018-10-09 14:56           ` Bruce Richardson
2018-10-09 17:07             ` Thomas Monjalon
2018-10-10 10:51   ` [dpdk-dev] [PATCH v3 00/12] " Kevin Laatz
2018-10-10 10:51     ` [dpdk-dev] [PATCH v3 01/12] eal: add param register infrastructure Kevin Laatz
2018-10-10 12:28       ` Thomas Monjalon
2018-10-10 10:51     ` [dpdk-dev] [PATCH v3 02/12] telemetry: initial telemetry infrastructure Kevin Laatz
2018-10-10 10:51     ` [dpdk-dev] [PATCH v3 03/12] telemetry: add initial connection socket Kevin Laatz
2018-10-10 12:24       ` Thomas Monjalon
2018-10-10 10:51     ` [dpdk-dev] [PATCH v3 04/12] telemetry: add client feature and sockets Kevin Laatz
2018-10-10 10:51     ` [dpdk-dev] [PATCH v3 05/12] telemetry: add parser for client socket messages Kevin Laatz
2018-10-10 10:51     ` [dpdk-dev] [PATCH v3 06/12] telemetry: update metrics before sending stats Kevin Laatz
2018-10-10 10:51     ` [dpdk-dev] [PATCH v3 07/12] telemetry: format json response when " Kevin Laatz
2018-10-10 10:51     ` [dpdk-dev] [PATCH v3 08/12] telemetry: add tests for telemetry api Kevin Laatz
2018-10-10 10:51     ` [dpdk-dev] [PATCH v3 09/12] telemetry: add ability to disable selftest Kevin Laatz
2018-10-10 10:51     ` [dpdk-dev] [PATCH v3 10/12] doc: add telemetry documentation Kevin Laatz
2018-10-10 10:51     ` [dpdk-dev] [PATCH v3 11/12] usertools: add client python script for telemetry Kevin Laatz
2018-10-10 10:51     ` [dpdk-dev] [PATCH v3 12/12] build: add dependency on telemetry to apps in meson Kevin Laatz
2018-10-11 16:58     ` [dpdk-dev] [PATCH v4 00/13] introduce telemetry library Kevin Laatz
2018-10-11 16:58       ` [dpdk-dev] [PATCH v4 01/13] eal: add param register infrastructure Kevin Laatz
2018-10-16  0:45         ` Van Haaren, Harry
2018-10-16 13:42         ` Thomas Monjalon
2018-10-16 14:20           ` Laatz, Kevin
2018-10-11 16:58       ` [dpdk-dev] [PATCH v4 02/13] eal: make get runtime dir function public Kevin Laatz
2018-10-16  0:45         ` Van Haaren, Harry
2018-10-11 16:58       ` [dpdk-dev] [PATCH v4 03/13] telemetry: initial telemetry infrastructure Kevin Laatz
2018-10-16  0:45         ` Van Haaren, Harry
2018-10-11 16:58       ` [dpdk-dev] [PATCH v4 04/13] telemetry: add initial connection socket Kevin Laatz
2018-10-16  0:45         ` Van Haaren, Harry
2018-10-11 16:58       ` [dpdk-dev] [PATCH v4 05/13] telemetry: add client feature and sockets Kevin Laatz
2018-10-16  0:45         ` Van Haaren, Harry
2018-10-11 16:58       ` [dpdk-dev] [PATCH v4 06/13] telemetry: add parser for client socket messages Kevin Laatz
2018-10-16  0:45         ` Van Haaren, Harry
2018-10-11 16:58       ` [dpdk-dev] [PATCH v4 07/13] telemetry: update metrics before sending stats Kevin Laatz
2018-10-16  0:45         ` Van Haaren, Harry
2018-10-11 16:58       ` [dpdk-dev] [PATCH v4 08/13] telemetry: format json response when " Kevin Laatz
2018-10-16  0:46         ` Van Haaren, Harry
2018-10-11 16:58       ` [dpdk-dev] [PATCH v4 09/13] telemetry: add tests for telemetry api Kevin Laatz
2018-10-16  0:46         ` Van Haaren, Harry
2018-10-11 16:58       ` [dpdk-dev] [PATCH v4 10/13] telemetry: add ability to disable selftest Kevin Laatz
2018-10-16  0:47         ` Van Haaren, Harry
2018-10-11 16:58       ` [dpdk-dev] [PATCH v4 11/13] doc: add telemetry documentation Kevin Laatz
2018-10-16  0:47         ` Van Haaren, Harry
2018-10-11 16:58       ` [dpdk-dev] [PATCH v4 12/13] usertools: add client python script for telemetry Kevin Laatz
2018-10-16  0:47         ` Van Haaren, Harry
2018-10-11 16:58       ` [dpdk-dev] [PATCH v4 13/13] build: add dependency on telemetry to apps in meson Kevin Laatz
2018-10-16  0:47         ` Van Haaren, Harry
2018-10-16 15:57       ` [dpdk-dev] [PATCH v5 00/13] introduce telemetry library Kevin Laatz
2018-10-16 15:57         ` [dpdk-dev] [PATCH v5 01/13] eal: add param register infrastructure Kevin Laatz
2018-10-17  9:41           ` Thomas Monjalon
2018-10-17 11:45             ` Gaëtan Rivet
2018-10-17 13:46               ` Thomas Monjalon
2018-10-17 14:09                 ` Laatz, Kevin
2018-10-17 14:20                   ` Thomas Monjalon
2018-10-17 13:55               ` Laatz, Kevin
2018-10-17 15:56           ` Gaëtan Rivet [this message]
2018-10-18 15:58             ` Laatz, Kevin
2018-10-16 15:57         ` [dpdk-dev] [PATCH v5 02/13] eal: make get runtime dir function public Kevin Laatz
2018-10-16 15:57         ` [dpdk-dev] [PATCH v5 03/13] telemetry: initial telemetry infrastructure Kevin Laatz
2018-10-16 15:57         ` [dpdk-dev] [PATCH v5 04/13] telemetry: add initial connection socket Kevin Laatz
2018-10-16 15:57         ` [dpdk-dev] [PATCH v5 05/13] telemetry: add client feature and sockets Kevin Laatz
2018-10-16 15:57         ` [dpdk-dev] [PATCH v5 06/13] telemetry: add parser for client socket messages Kevin Laatz
2018-10-16 15:57         ` [dpdk-dev] [PATCH v5 07/13] telemetry: update metrics before sending stats Kevin Laatz
2018-10-16 15:57         ` [dpdk-dev] [PATCH v5 08/13] telemetry: format json response when " Kevin Laatz
2018-10-16 15:57         ` [dpdk-dev] [PATCH v5 09/13] telemetry: add tests for telemetry api Kevin Laatz
2018-10-16 15:57         ` [dpdk-dev] [PATCH v5 10/13] telemetry: add ability to disable selftest Kevin Laatz
2018-10-16 15:58         ` [dpdk-dev] [PATCH v5 11/13] doc: add telemetry documentation Kevin Laatz
2018-10-16 15:58         ` [dpdk-dev] [PATCH v5 12/13] usertools: add client python script for telemetry Kevin Laatz
2018-10-16 15:58         ` [dpdk-dev] [PATCH v5 13/13] build: add dependency on telemetry to apps in meson Kevin Laatz
2018-10-18  8:07         ` [dpdk-dev] [PATCH v5 00/13] introduce telemetry library Mattias Rönnblom
2018-10-19 10:16           ` Laatz, Kevin
2018-10-22  7:11             ` Mattias Rönnblom
2018-10-22  9:03               ` Laatz, Kevin
2018-10-22 11:00         ` [dpdk-dev] [PATCH v6 " Kevin Laatz
2018-10-22 11:00           ` [dpdk-dev] [PATCH v6 01/13] eal: add option register infrastructure Kevin Laatz
2018-10-22 11:00           ` [dpdk-dev] [PATCH v6 02/13] eal: make get runtime dir function public Kevin Laatz
2018-10-22 11:00           ` [dpdk-dev] [PATCH v6 03/13] telemetry: initial telemetry infrastructure Kevin Laatz
2018-10-22 11:00           ` [dpdk-dev] [PATCH v6 04/13] telemetry: add initial connection socket Kevin Laatz
2018-10-22 13:50             ` Mattias Rönnblom
2018-10-22 11:00           ` [dpdk-dev] [PATCH v6 05/13] telemetry: add client feature and sockets Kevin Laatz
2018-10-22 14:05             ` Mattias Rönnblom
2018-10-23  8:42               ` Laatz, Kevin
2018-10-22 11:00           ` [dpdk-dev] [PATCH v6 06/13] telemetry: add parser for client socket messages Kevin Laatz
2018-10-22 11:00           ` [dpdk-dev] [PATCH v6 07/13] telemetry: update metrics before sending stats Kevin Laatz
2018-10-22 11:00           ` [dpdk-dev] [PATCH v6 08/13] telemetry: format json response when " Kevin Laatz
2018-10-22 11:00           ` [dpdk-dev] [PATCH v6 09/13] telemetry: add tests for telemetry api Kevin Laatz
2018-10-22 11:00           ` [dpdk-dev] [PATCH v6 10/13] telemetry: add ability to disable selftest Kevin Laatz
2018-10-22 11:00           ` [dpdk-dev] [PATCH v6 11/13] doc: add telemetry documentation Kevin Laatz
2018-10-22 12:25             ` Kovacevic, Marko
2018-10-22 11:00           ` [dpdk-dev] [PATCH v6 12/13] usertools: add client python script for telemetry Kevin Laatz
2018-10-22 11:00           ` [dpdk-dev] [PATCH v6 13/13] build: add dependency on telemetry to apps in meson Kevin Laatz
2018-10-24 13:27           ` [dpdk-dev] [PATCH v7 00/13] introduce telemetry library Kevin Laatz
2018-10-24 13:27             ` [dpdk-dev] [PATCH v7 01/13] eal: add option register infrastructure Kevin Laatz
2018-10-24 14:01               ` Gaëtan Rivet
2018-10-24 14:33                 ` Thomas Monjalon
2018-10-24 14:52                   ` Laatz, Kevin
2018-10-24 15:05                     ` Laatz, Kevin
2018-10-24 13:27             ` [dpdk-dev] [PATCH v7 02/13] eal: make get runtime dir function public Kevin Laatz
2018-10-24 13:27             ` [dpdk-dev] [PATCH v7 03/13] telemetry: initial telemetry infrastructure Kevin Laatz
2018-10-24 13:27             ` [dpdk-dev] [PATCH v7 04/13] telemetry: add initial connection socket Kevin Laatz
2018-10-24 13:27             ` [dpdk-dev] [PATCH v7 05/13] telemetry: add client feature and sockets Kevin Laatz
2018-10-24 13:27             ` [dpdk-dev] [PATCH v7 06/13] telemetry: add parser for client socket messages Kevin Laatz
2018-10-24 13:27             ` [dpdk-dev] [PATCH v7 07/13] telemetry: update metrics before sending stats Kevin Laatz
2018-10-24 13:27             ` [dpdk-dev] [PATCH v7 08/13] telemetry: format json response when " Kevin Laatz
2018-10-24 13:27             ` [dpdk-dev] [PATCH v7 09/13] telemetry: add tests for telemetry api Kevin Laatz
2018-10-24 13:27             ` [dpdk-dev] [PATCH v7 10/13] telemetry: add ability to disable selftest Kevin Laatz
2018-10-24 13:27             ` [dpdk-dev] [PATCH v7 11/13] doc: add telemetry documentation Kevin Laatz
2018-10-24 13:27             ` [dpdk-dev] [PATCH v7 12/13] usertools: add client python script for telemetry Kevin Laatz
2018-10-24 13:27             ` [dpdk-dev] [PATCH v7 13/13] build: add dependency on telemetry to apps in meson Kevin Laatz
2018-10-24 14:13             ` [dpdk-dev] [PATCH v7 00/13] introduce telemetry library Thomas Monjalon
2018-10-24 14:49               ` Laatz, Kevin
2018-10-24 16:02             ` [dpdk-dev] [PATCH v8 " Kevin Laatz
2018-10-24 16:02               ` [dpdk-dev] [PATCH v8 01/13] eal: add option register infrastructure Kevin Laatz
2018-10-24 16:03               ` [dpdk-dev] [PATCH v8 02/13] eal: make get runtime dir function public Kevin Laatz
2018-10-24 16:03               ` [dpdk-dev] [PATCH v8 03/13] telemetry: initial telemetry infrastructure Kevin Laatz
2018-10-25 20:33                 ` Thomas Monjalon
2018-10-24 16:03               ` [dpdk-dev] [PATCH v8 04/13] telemetry: add initial connection socket Kevin Laatz
2018-10-24 16:03               ` [dpdk-dev] [PATCH v8 05/13] telemetry: add client feature and sockets Kevin Laatz
2018-10-25 20:29                 ` Thomas Monjalon
2018-10-25 20:41                   ` Thomas Monjalon
2018-10-25 20:44                     ` Bruce Richardson
2018-10-25 20:49                       ` Thomas Monjalon
2018-10-25 21:16                         ` Richardson, Bruce
2018-10-25 23:58                           ` Thomas Monjalon
2018-10-24 16:03               ` [dpdk-dev] [PATCH v8 06/13] telemetry: add parser for client socket messages Kevin Laatz
2018-10-24 16:03               ` [dpdk-dev] [PATCH v8 07/13] telemetry: update metrics before sending stats Kevin Laatz
2018-10-24 16:03               ` [dpdk-dev] [PATCH v8 08/13] telemetry: format json response when " Kevin Laatz
2018-10-24 16:03               ` [dpdk-dev] [PATCH v8 09/13] telemetry: add tests for telemetry api Kevin Laatz
2018-10-24 16:03               ` [dpdk-dev] [PATCH v8 10/13] telemetry: add ability to disable selftest Kevin Laatz
2018-10-24 16:03               ` [dpdk-dev] [PATCH v8 11/13] doc: add telemetry documentation Kevin Laatz
2018-10-25 20:31                 ` Thomas Monjalon
2018-10-24 16:03               ` [dpdk-dev] [PATCH v8 12/13] usertools: add client python script for telemetry Kevin Laatz
2018-10-24 16:03               ` [dpdk-dev] [PATCH v8 13/13] build: add dependency on telemetry to apps in meson Kevin Laatz
2018-10-26 23:59               ` [dpdk-dev] [PATCH v9 00/12] Introduce Telemetry Library Harry van Haaren
2018-10-26 23:59                 ` [dpdk-dev] [PATCH v9 01/12] eal: add option register infrastructure Harry van Haaren
2018-10-26 23:59                 ` [dpdk-dev] [PATCH v9 02/12] eal: make get runtime dir function public Harry van Haaren
2018-10-26 23:59                 ` [dpdk-dev] [PATCH v9 03/12] telemetry: initial telemetry infrastructure Harry van Haaren
2018-10-27  1:56                   ` Thomas Monjalon
2018-10-27  2:19                     ` Van Haaren, Harry
2018-10-27  2:33                       ` Thomas Monjalon
2018-10-26 23:59                 ` [dpdk-dev] [PATCH v9 04/12] telemetry: add initial connection socket Harry van Haaren
2018-10-26 23:59                 ` [dpdk-dev] [PATCH v9 05/12] telemetry: add client feature and sockets Harry van Haaren
2018-10-26 23:59                 ` [dpdk-dev] [PATCH v9 06/12] telemetry: add parser for client socket messages Harry van Haaren
2018-10-26 23:59                 ` [dpdk-dev] [PATCH v9 07/12] telemetry: update metrics before sending stats Harry van Haaren
2018-10-26 23:59                 ` [dpdk-dev] [PATCH v9 08/12] telemetry: format json response when " Harry van Haaren
2018-10-26 23:59                 ` [dpdk-dev] [PATCH v9 09/12] telemetry: add ability to disable selftest Harry van Haaren
2018-10-26 23:59                 ` [dpdk-dev] [PATCH v9 10/12] doc: add telemetry documentation Harry van Haaren
2018-10-26 23:59                 ` [dpdk-dev] [PATCH v9 11/12] usertools: add client python script for telemetry Harry van Haaren
2018-10-26 23:59                 ` [dpdk-dev] [PATCH v9 12/12] build: add dependency on telemetry to apps in meson Harry van Haaren
2018-10-27  9:17                 ` [dpdk-dev] [PATCH v10 00/12] Introduce Telemetry Library Harry van Haaren
2018-10-27  9:17                   ` [dpdk-dev] [PATCH v10 01/12] eal: add option register infrastructure Harry van Haaren
2018-10-27  9:17                   ` [dpdk-dev] [PATCH v10 02/12] eal: make get runtime dir function public Harry van Haaren
2018-10-27  9:17                   ` [dpdk-dev] [PATCH v10 03/12] telemetry: initial telemetry infrastructure Harry van Haaren
2018-10-27  9:17                   ` [dpdk-dev] [PATCH v10 04/12] telemetry: add initial connection socket Harry van Haaren
2018-10-27  9:17                   ` [dpdk-dev] [PATCH v10 05/12] telemetry: add client feature and sockets Harry van Haaren
2018-10-27  9:17                   ` [dpdk-dev] [PATCH v10 06/12] telemetry: add parser for client socket messages Harry van Haaren
2018-10-27  9:17                   ` [dpdk-dev] [PATCH v10 07/12] telemetry: update metrics before sending stats Harry van Haaren
2018-10-27  9:17                   ` [dpdk-dev] [PATCH v10 08/12] telemetry: format json response when " Harry van Haaren
2018-10-27  9:17                   ` [dpdk-dev] [PATCH v10 09/12] telemetry: add ability to disable selftest Harry van Haaren
2018-10-27  9:17                   ` [dpdk-dev] [PATCH v10 10/12] doc: add telemetry documentation Harry van Haaren
2018-10-27  9:17                   ` [dpdk-dev] [PATCH v10 11/12] usertools: add client python script for telemetry Harry van Haaren
2018-10-27  9:17                   ` [dpdk-dev] [PATCH v10 12/12] build: add dependency on telemetry to apps in meson Harry van Haaren
2018-10-27 13:24                   ` [dpdk-dev] [PATCH v10 00/12] Introduce Telemetry Library Thomas Monjalon

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=20181017155602.kz2kpxx76cwutnbg@bidouze.vm.6wind.com \
    --to=gaetan.rivet@6wind.com \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=harry.van.haaren@intel.com \
    --cc=kevin.laatz@intel.com \
    --cc=mattias.ronnblom@ericsson.com \
    --cc=shreyansh.jain@nxp.com \
    --cc=stephen@networkplumber.org \
    --cc=thomas@monjalon.net \
    /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).