* [dpdk-dev] [PATCH 0/4] telemetry logging improvements and cleanup @ 2021-03-10 17:24 Bruce Richardson 2021-03-10 17:24 ` [dpdk-dev] [PATCH 1/4] telemetry: use rte_log for logging Bruce Richardson ` (5 more replies) 0 siblings, 6 replies; 19+ messages in thread From: Bruce Richardson @ 2021-03-10 17:24 UTC (permalink / raw) To: dev; +Cc: Bruce Richardson This set adds support for using the regular rte_log functions from the telemetry library; avoiding circular dependencies by having EAL register the telemetry library itself and then passing the required handles to that library as part of the telemetry_init call. Beyond this change, the other three patches are cleanups to ensure that all internal functions are clearly separate from the public APIs. (Patches 3 & 4 may be merged into a single one on apply, for I've kept them separate for now for clarity). Bruce Richardson (4): telemetry: use rte_log for logging telemetry: make the legacy registration function internal telemetry: create internal-only header file telemetry: move init function to internal header doc/guides/rel_notes/release_21_05.rst | 5 ++ lib/librte_eal/freebsd/eal.c | 12 +-- lib/librte_eal/linux/eal.c | 12 +-- lib/librte_metrics/rte_metrics_telemetry.c | 2 +- lib/librte_telemetry/rte_telemetry.h | 22 ------ lib/librte_telemetry/telemetry.c | 74 +++++++++---------- ...elemetry_legacy.h => telemetry_internal.h} | 37 +++++++++- lib/librte_telemetry/telemetry_legacy.c | 2 +- lib/librte_telemetry/version.map | 2 +- 9 files changed, 82 insertions(+), 86 deletions(-) rename lib/librte_telemetry/{rte_telemetry_legacy.h => telemetry_internal.h} (67%) -- 2.27.0 ^ permalink raw reply [flat|nested] 19+ messages in thread
* [dpdk-dev] [PATCH 1/4] telemetry: use rte_log for logging 2021-03-10 17:24 [dpdk-dev] [PATCH 0/4] telemetry logging improvements and cleanup Bruce Richardson @ 2021-03-10 17:24 ` Bruce Richardson 2021-03-11 12:50 ` Power, Ciara 2021-03-10 17:24 ` [dpdk-dev] [PATCH 2/4] telemetry: make the legacy registration function internal Bruce Richardson ` (4 subsequent siblings) 5 siblings, 1 reply; 19+ messages in thread From: Bruce Richardson @ 2021-03-10 17:24 UTC (permalink / raw) To: dev; +Cc: Bruce Richardson, Kevin Laatz Rather than passing back an error string to the caller, take as input the rte_log function to use, and just use regular logging. Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> --- lib/librte_eal/freebsd/eal.c | 10 ++-- lib/librte_eal/linux/eal.c | 10 ++-- lib/librte_telemetry/rte_telemetry.h | 15 ++++-- lib/librte_telemetry/telemetry.c | 72 +++++++++++++--------------- 4 files changed, 49 insertions(+), 58 deletions(-) diff --git a/lib/librte_eal/freebsd/eal.c b/lib/librte_eal/freebsd/eal.c index e2cdad5283..b8a798bc7d 100644 --- a/lib/librte_eal/freebsd/eal.c +++ b/lib/librte_eal/freebsd/eal.c @@ -941,15 +941,11 @@ rte_eal_init(int argc, char **argv) return -1; } if (!internal_conf->no_telemetry) { - const char *error_str = NULL; + uint32_t tlog = rte_log_register_type_and_pick_level( + "lib.telemetry", RTE_LOG_WARNING); if (rte_telemetry_init(rte_eal_get_runtime_dir(), - &internal_conf->ctrl_cpuset, &error_str) - != 0) { - rte_eal_init_alert(error_str); + &internal_conf->ctrl_cpuset, rte_log, tlog) != 0) return -1; - } - if (error_str != NULL) - RTE_LOG(NOTICE, EAL, "%s\n", error_str); } eal_mcfg_complete(); diff --git a/lib/librte_eal/linux/eal.c b/lib/librte_eal/linux/eal.c index 6c34ac8903..23e3a32036 100644 --- a/lib/librte_eal/linux/eal.c +++ b/lib/librte_eal/linux/eal.c @@ -1314,15 +1314,11 @@ rte_eal_init(int argc, char **argv) return -1; } if (!internal_conf->no_telemetry) { - const char *error_str = NULL; + uint32_t tlog = rte_log_register_type_and_pick_level( + "lib.telemetry", RTE_LOG_WARNING); if (rte_telemetry_init(rte_eal_get_runtime_dir(), - &internal_conf->ctrl_cpuset, &error_str) - != 0) { - rte_eal_init_alert(error_str); + &internal_conf->ctrl_cpuset, rte_log, tlog) != 0) return -1; - } - if (error_str != NULL) - RTE_LOG(NOTICE, EAL, "%s\n", error_str); } eal_mcfg_complete(); diff --git a/lib/librte_telemetry/rte_telemetry.h b/lib/librte_telemetry/rte_telemetry.h index f8e54dc68e..2c3da3ab7f 100644 --- a/lib/librte_telemetry/rte_telemetry.h +++ b/lib/librte_telemetry/rte_telemetry.h @@ -292,6 +292,12 @@ __rte_experimental int rte_telemetry_register_cmd(const char *cmd, telemetry_cb fn, const char *help); +/** + * @internal + * Log function type, to allow passing as parameter if necessary + */ +typedef int (*rte_log_fn)(uint32_t level, uint32_t logtype, const char *format, ...); + /** * @internal * Initialize Telemetry. @@ -300,9 +306,10 @@ rte_telemetry_register_cmd(const char *cmd, telemetry_cb fn, const char *help); * The runtime directory of DPDK. * @param cpuset * The CPU set to be used for setting the thread affinity. - * @param err_str - * This err_str pointer should point to NULL on entry. In the case of an error - * or warning, it will be non-NULL on exit. + * @param log_fn + * Function pointer to the rte_log function for logging use + * @param registered_logtype + * The registered log type to use for logging * * @return * 0 on success. @@ -312,7 +319,7 @@ rte_telemetry_register_cmd(const char *cmd, telemetry_cb fn, const char *help); __rte_internal int rte_telemetry_init(const char *runtime_dir, rte_cpuset_t *cpuset, - const char **err_str); + rte_log_fn log_fn, uint32_t registered_logtype); /** * Get a pointer to a container with memory allocated. The container is to be diff --git a/lib/librte_telemetry/telemetry.c b/lib/librte_telemetry/telemetry.c index b142729da4..18f2ae2e2f 100644 --- a/lib/librte_telemetry/telemetry.c +++ b/lib/librte_telemetry/telemetry.c @@ -16,6 +16,7 @@ #include <rte_common.h> #include <rte_spinlock.h> #include <rte_version.h> +#include <rte_log.h> #include "rte_telemetry.h" #include "telemetry_json.h" @@ -48,7 +49,15 @@ struct socket { static struct socket v2_socket; /* socket for v2 telemetry */ static struct socket v1_socket; /* socket for v1 telemetry */ #endif /* !RTE_EXEC_ENV_WINDOWS */ -static char telemetry_log_error[1024]; /* Will contain error on init failure */ + +static const char *socket_dir; +static rte_cpuset_t *thread_cpuset; +static rte_log_fn rte_log_ptr; +static uint32_t logtype; + +#define TMTY_LOG(l, ...) \ + rte_log_ptr(RTE_LOG_ ## l, logtype, "TELEMETRY: " __VA_ARGS__) + /* list of command callbacks, with one command registered by default */ static struct cmd_callback callbacks[TELEMETRY_MAX_CALLBACKS]; static int num_callbacks; /* How many commands are registered */ @@ -344,9 +353,7 @@ socket_listener(void *socket) struct socket *s = (struct socket *)socket; int s_accepted = accept(s->sock, NULL, NULL); if (s_accepted < 0) { - snprintf(telemetry_log_error, - sizeof(telemetry_log_error), - "Error with accept, telemetry thread quitting"); + TMTY_LOG(ERR, "Error with accept, telemetry thread quitting\n"); return NULL; } if (s->num_clients != NULL) { @@ -388,9 +395,7 @@ create_socket(char *path) { int sock = socket(AF_UNIX, SOCK_SEQPACKET, 0); if (sock < 0) { - snprintf(telemetry_log_error, sizeof(telemetry_log_error), - "Error with socket creation, %s", - strerror(errno)); + TMTY_LOG(ERR, "Error with socket creation, %s\n", strerror(errno)); return -1; } @@ -398,17 +403,13 @@ create_socket(char *path) strlcpy(sun.sun_path, path, sizeof(sun.sun_path)); unlink(sun.sun_path); if (bind(sock, (void *) &sun, sizeof(sun)) < 0) { - snprintf(telemetry_log_error, sizeof(telemetry_log_error), - "Error binding socket: %s", - strerror(errno)); + TMTY_LOG(ERR, "Error binding socket: %s\n", strerror(errno)); sun.sun_path[0] = 0; goto error; } if (listen(sock, 1) < 0) { - snprintf(telemetry_log_error, sizeof(telemetry_log_error), - "Error calling listen for socket: %s", - strerror(errno)); + TMTY_LOG(ERR, "Error calling listen for socket: %s\n", strerror(errno)); goto error; } @@ -421,35 +422,33 @@ create_socket(char *path) } static int -telemetry_legacy_init(const char *runtime_dir, rte_cpuset_t *cpuset) +telemetry_legacy_init(void) { pthread_t t_old; if (num_legacy_callbacks == 1) { - snprintf(telemetry_log_error, sizeof(telemetry_log_error), - "No legacy callbacks, legacy socket not created"); + TMTY_LOG(WARNING, "No legacy callbacks, legacy socket not created\n"); return -1; } v1_socket.fn = legacy_client_handler; if ((size_t) snprintf(v1_socket.path, sizeof(v1_socket.path), - "%s/telemetry", runtime_dir) - >= sizeof(v1_socket.path)) { - snprintf(telemetry_log_error, sizeof(telemetry_log_error), - "Error with socket binding, path too long"); + "%s/telemetry", socket_dir) >= sizeof(v1_socket.path)) { + TMTY_LOG(ERR, "Error with socket binding, path too long\n"); return -1; } v1_socket.sock = create_socket(v1_socket.path); if (v1_socket.sock < 0) return -1; pthread_create(&t_old, NULL, socket_listener, &v1_socket); - pthread_setaffinity_np(t_old, sizeof(*cpuset), cpuset); + pthread_setaffinity_np(t_old, sizeof(*thread_cpuset), thread_cpuset); + TMTY_LOG(DEBUG, "Legacy telemetry socket initialized ok\n"); return 0; } static int -telemetry_v2_init(const char *runtime_dir, rte_cpuset_t *cpuset) +telemetry_v2_init(void) { pthread_t t_new; @@ -461,10 +460,9 @@ telemetry_v2_init(const char *runtime_dir, rte_cpuset_t *cpuset) rte_telemetry_register_cmd("/help", command_help, "Returns help text for a command. Parameters: string command"); v2_socket.fn = client_handler; - if (strlcpy(v2_socket.path, get_socket_path(runtime_dir, 2), + if (strlcpy(v2_socket.path, get_socket_path(socket_dir, 2), sizeof(v2_socket.path)) >= sizeof(v2_socket.path)) { - snprintf(telemetry_log_error, sizeof(telemetry_log_error), - "Error with socket binding, path too long"); + TMTY_LOG(ERR, "Error with socket binding, path too long\n"); return -1; } @@ -472,7 +470,7 @@ telemetry_v2_init(const char *runtime_dir, rte_cpuset_t *cpuset) if (v2_socket.sock < 0) return -1; pthread_create(&t_new, NULL, socket_listener, &v2_socket); - pthread_setaffinity_np(t_new, sizeof(*cpuset), cpuset); + pthread_setaffinity_np(t_new, sizeof(*thread_cpuset), thread_cpuset); atexit(unlink_sockets); return 0; @@ -482,23 +480,17 @@ telemetry_v2_init(const char *runtime_dir, rte_cpuset_t *cpuset) int32_t rte_telemetry_init(const char *runtime_dir, rte_cpuset_t *cpuset, - const char **err_str) + rte_log_fn log_fn, uint32_t registered_logtype) { + socket_dir = runtime_dir; + thread_cpuset = cpuset; + rte_log_ptr = log_fn; + logtype = registered_logtype; #ifndef RTE_EXEC_ENV_WINDOWS - if (telemetry_v2_init(runtime_dir, cpuset) != 0) { - *err_str = telemetry_log_error; + if (telemetry_v2_init() != 0) return -1; - } - if (telemetry_legacy_init(runtime_dir, cpuset) != 0) { - *err_str = telemetry_log_error; - } -#else /* RTE_EXEC_ENV_WINDOWS */ - RTE_SET_USED(runtime_dir); - RTE_SET_USED(cpuset); - RTE_SET_USED(err_str); - - snprintf(telemetry_log_error, sizeof(telemetry_log_error), - "DPDK Telemetry is not supported on Windows."); + TMTY_LOG(DEBUG, "Telemetry initialized ok\n"); + telemetry_legacy_init(); #endif /* RTE_EXEC_ENV_WINDOWS */ return 0; -- 2.27.0 ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [dpdk-dev] [PATCH 1/4] telemetry: use rte_log for logging 2021-03-10 17:24 ` [dpdk-dev] [PATCH 1/4] telemetry: use rte_log for logging Bruce Richardson @ 2021-03-11 12:50 ` Power, Ciara 0 siblings, 0 replies; 19+ messages in thread From: Power, Ciara @ 2021-03-11 12:50 UTC (permalink / raw) To: Richardson, Bruce, dev; +Cc: Richardson, Bruce, Laatz, Kevin >-----Original Message----- >From: dev <dev-bounces@dpdk.org> On Behalf Of Bruce Richardson >Sent: Wednesday 10 March 2021 17:24 >To: dev@dpdk.org >Cc: Richardson, Bruce <bruce.richardson@intel.com>; Laatz, Kevin ><kevin.laatz@intel.com> >Subject: [dpdk-dev] [PATCH 1/4] telemetry: use rte_log for logging > >Rather than passing back an error string to the caller, take as input the rte_log >function to use, and just use regular logging. > >Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> >--- > lib/librte_eal/freebsd/eal.c | 10 ++-- > lib/librte_eal/linux/eal.c | 10 ++-- > lib/librte_telemetry/rte_telemetry.h | 15 ++++-- > lib/librte_telemetry/telemetry.c | 72 +++++++++++++--------------- > 4 files changed, 49 insertions(+), 58 deletions(-) > <snip> Acked-by: Ciara Power <ciara.power@intel.com> ^ permalink raw reply [flat|nested] 19+ messages in thread
* [dpdk-dev] [PATCH 2/4] telemetry: make the legacy registration function internal 2021-03-10 17:24 [dpdk-dev] [PATCH 0/4] telemetry logging improvements and cleanup Bruce Richardson 2021-03-10 17:24 ` [dpdk-dev] [PATCH 1/4] telemetry: use rte_log for logging Bruce Richardson @ 2021-03-10 17:24 ` Bruce Richardson 2021-03-11 12:50 ` Power, Ciara 2021-03-10 17:24 ` [dpdk-dev] [PATCH 3/4] telemetry: create internal-only header file Bruce Richardson ` (3 subsequent siblings) 5 siblings, 1 reply; 19+ messages in thread From: Bruce Richardson @ 2021-03-10 17:24 UTC (permalink / raw) To: dev; +Cc: Bruce Richardson, Kevin Laatz, Ray Kinsella, Neil Horman The function for registration of callbacks for legacy telemetry was documented as internal-only in the API documents, but marked as experimental in the version.map file. Since this is an internal-only function, for consistency we update the version mapping to have it as internal. Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> --- doc/guides/rel_notes/release_21_05.rst | 5 +++++ lib/librte_telemetry/rte_telemetry_legacy.h | 2 +- lib/librte_telemetry/version.map | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/doc/guides/rel_notes/release_21_05.rst b/doc/guides/rel_notes/release_21_05.rst index 23f7f0bff9..1624f43d73 100644 --- a/doc/guides/rel_notes/release_21_05.rst +++ b/doc/guides/rel_notes/release_21_05.rst @@ -117,6 +117,11 @@ ABI Changes * No ABI change that would break compatibility with 20.11. +* The experimental function ``rte_telemetry_legacy_register`` has been + removed from the public API and is now an internal-only function. This + function was already marked as internal in the API documentation for it, + and was not for use by external applications. + Known Issues ------------ diff --git a/lib/librte_telemetry/rte_telemetry_legacy.h b/lib/librte_telemetry/rte_telemetry_legacy.h index c83f9a8d90..fb44740186 100644 --- a/lib/librte_telemetry/rte_telemetry_legacy.h +++ b/lib/librte_telemetry/rte_telemetry_legacy.h @@ -78,7 +78,7 @@ legacy_client_handler(void *sock_id); * @return * -ENOENT if max callbacks limit has been reached. */ -__rte_experimental +__rte_internal int rte_telemetry_legacy_register(const char *cmd, enum rte_telemetry_legacy_data_req data_req, diff --git a/lib/librte_telemetry/version.map b/lib/librte_telemetry/version.map index ec0ebc1bec..bde80ce29b 100644 --- a/lib/librte_telemetry/version.map +++ b/lib/librte_telemetry/version.map @@ -14,12 +14,12 @@ EXPERIMENTAL { rte_tel_data_start_array; rte_tel_data_start_dict; rte_tel_data_string; - rte_telemetry_legacy_register; rte_telemetry_register_cmd; local: *; }; INTERNAL { + rte_telemetry_legacy_register; rte_telemetry_init; }; -- 2.27.0 ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [dpdk-dev] [PATCH 2/4] telemetry: make the legacy registration function internal 2021-03-10 17:24 ` [dpdk-dev] [PATCH 2/4] telemetry: make the legacy registration function internal Bruce Richardson @ 2021-03-11 12:50 ` Power, Ciara 0 siblings, 0 replies; 19+ messages in thread From: Power, Ciara @ 2021-03-11 12:50 UTC (permalink / raw) To: Richardson, Bruce, dev Cc: Richardson, Bruce, Laatz, Kevin, Ray Kinsella, Neil Horman >-----Original Message----- >From: dev <dev-bounces@dpdk.org> On Behalf Of Bruce Richardson >Sent: Wednesday 10 March 2021 17:24 >To: dev@dpdk.org >Cc: Richardson, Bruce <bruce.richardson@intel.com>; Laatz, Kevin ><kevin.laatz@intel.com>; Ray Kinsella <mdr@ashroe.eu>; Neil Horman ><nhorman@tuxdriver.com> >Subject: [dpdk-dev] [PATCH 2/4] telemetry: make the legacy registration >function internal > >The function for registration of callbacks for legacy telemetry was >documented as internal-only in the API documents, but marked as >experimental in the version.map file. Since this is an internal-only function, for >consistency we update the version mapping to have it as internal. > >Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> >--- > doc/guides/rel_notes/release_21_05.rst | 5 +++++ > lib/librte_telemetry/rte_telemetry_legacy.h | 2 +- > lib/librte_telemetry/version.map | 2 +- > 3 files changed, 7 insertions(+), 2 deletions(-) > <snip> Acked-by: Ciara Power <ciara.power@intel.com> ^ permalink raw reply [flat|nested] 19+ messages in thread
* [dpdk-dev] [PATCH 3/4] telemetry: create internal-only header file 2021-03-10 17:24 [dpdk-dev] [PATCH 0/4] telemetry logging improvements and cleanup Bruce Richardson 2021-03-10 17:24 ` [dpdk-dev] [PATCH 1/4] telemetry: use rte_log for logging Bruce Richardson 2021-03-10 17:24 ` [dpdk-dev] [PATCH 2/4] telemetry: make the legacy registration function internal Bruce Richardson @ 2021-03-10 17:24 ` Bruce Richardson 2021-03-11 12:51 ` Power, Ciara 2021-03-10 17:24 ` [dpdk-dev] [PATCH 4/4] telemetry: move init function to internal header Bruce Richardson ` (2 subsequent siblings) 5 siblings, 1 reply; 19+ messages in thread From: Bruce Richardson @ 2021-03-10 17:24 UTC (permalink / raw) To: dev; +Cc: Bruce Richardson, Kevin Laatz The header file containing the legacy telemetry function prototypes was all internal-only, so we rename the file to be an internal-only one to make it clearer it's not for installation. Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> --- lib/librte_metrics/rte_metrics_telemetry.c | 2 +- lib/librte_telemetry/telemetry.c | 2 +- .../{rte_telemetry_legacy.h => telemetry_internal.h} | 6 +++--- lib/librte_telemetry/telemetry_legacy.c | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) rename lib/librte_telemetry/{rte_telemetry_legacy.h => telemetry_internal.h} (93%) diff --git a/lib/librte_metrics/rte_metrics_telemetry.c b/lib/librte_metrics/rte_metrics_telemetry.c index b8ee56ef01..bbc6a79f88 100644 --- a/lib/librte_metrics/rte_metrics_telemetry.c +++ b/lib/librte_metrics/rte_metrics_telemetry.c @@ -7,7 +7,7 @@ #include <rte_ethdev.h> #include <rte_string_fns.h> #ifdef RTE_LIB_TELEMETRY -#include <rte_telemetry_legacy.h> +#include <telemetry_internal.h> #endif #include "rte_metrics.h" diff --git a/lib/librte_telemetry/telemetry.c b/lib/librte_telemetry/telemetry.c index 18f2ae2e2f..c3c988e972 100644 --- a/lib/librte_telemetry/telemetry.c +++ b/lib/librte_telemetry/telemetry.c @@ -21,7 +21,7 @@ #include "rte_telemetry.h" #include "telemetry_json.h" #include "telemetry_data.h" -#include "rte_telemetry_legacy.h" +#include "telemetry_internal.h" #define MAX_CMD_LEN 56 #define MAX_HELP_LEN 64 diff --git a/lib/librte_telemetry/rte_telemetry_legacy.h b/lib/librte_telemetry/telemetry_internal.h similarity index 93% rename from lib/librte_telemetry/rte_telemetry_legacy.h rename to lib/librte_telemetry/telemetry_internal.h index fb44740186..ad076b9119 100644 --- a/lib/librte_telemetry/rte_telemetry_legacy.h +++ b/lib/librte_telemetry/telemetry_internal.h @@ -2,8 +2,8 @@ * Copyright(c) 2020 Intel Corporation */ -#ifndef _RTE_TELEMETRY_LEGACY_H_ -#define _RTE_TELEMETRY_LEGACY_H_ +#ifndef _RTE_TELEMETRY_INTERNAL_H_ +#define _RTE_TELEMETRY_INTERNAL_H_ #include <rte_compat.h> #include "rte_telemetry.h" @@ -14,7 +14,7 @@ * @b EXPERIMENTAL: this API may change without prior notice * @file - * RTE Telemetry Legacy + * RTE Telemetry Legacy and internal definitions * ***/ diff --git a/lib/librte_telemetry/telemetry_legacy.c b/lib/librte_telemetry/telemetry_legacy.c index edd76ca359..5e9af37db1 100644 --- a/lib/librte_telemetry/telemetry_legacy.c +++ b/lib/librte_telemetry/telemetry_legacy.c @@ -15,7 +15,7 @@ #include <rte_common.h> #include <rte_spinlock.h> -#include "rte_telemetry_legacy.h" +#include "telemetry_internal.h" #define MAX_LEN 128 #define BUF_SIZE 1024 -- 2.27.0 ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [dpdk-dev] [PATCH 3/4] telemetry: create internal-only header file 2021-03-10 17:24 ` [dpdk-dev] [PATCH 3/4] telemetry: create internal-only header file Bruce Richardson @ 2021-03-11 12:51 ` Power, Ciara 0 siblings, 0 replies; 19+ messages in thread From: Power, Ciara @ 2021-03-11 12:51 UTC (permalink / raw) To: Richardson, Bruce, dev; +Cc: Richardson, Bruce, Laatz, Kevin >-----Original Message----- >From: dev <dev-bounces@dpdk.org> On Behalf Of Bruce Richardson >Sent: Wednesday 10 March 2021 17:24 >To: dev@dpdk.org >Cc: Richardson, Bruce <bruce.richardson@intel.com>; Laatz, Kevin ><kevin.laatz@intel.com> >Subject: [dpdk-dev] [PATCH 3/4] telemetry: create internal-only header file > >The header file containing the legacy telemetry function prototypes was all >internal-only, so we rename the file to be an internal-only one to make it >clearer it's not for installation. > >Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> >--- > lib/librte_metrics/rte_metrics_telemetry.c | 2 +- > lib/librte_telemetry/telemetry.c | 2 +- > .../{rte_telemetry_legacy.h => telemetry_internal.h} | 6 +++--- > lib/librte_telemetry/telemetry_legacy.c | 2 +- > 4 files changed, 6 insertions(+), 6 deletions(-) rename >lib/librte_telemetry/{rte_telemetry_legacy.h => telemetry_internal.h} (93%) > <snip> Acked-by: Ciara Power <ciara.power@intel.com> ^ permalink raw reply [flat|nested] 19+ messages in thread
* [dpdk-dev] [PATCH 4/4] telemetry: move init function to internal header 2021-03-10 17:24 [dpdk-dev] [PATCH 0/4] telemetry logging improvements and cleanup Bruce Richardson ` (2 preceding siblings ...) 2021-03-10 17:24 ` [dpdk-dev] [PATCH 3/4] telemetry: create internal-only header file Bruce Richardson @ 2021-03-10 17:24 ` Bruce Richardson 2021-03-11 12:51 ` Power, Ciara 2021-03-24 21:11 ` [dpdk-dev] [PATCH 0/4] telemetry logging improvements and cleanup Thomas Monjalon 2021-03-25 13:57 ` [dpdk-dev] [PATCH v2 " Bruce Richardson 5 siblings, 1 reply; 19+ messages in thread From: Bruce Richardson @ 2021-03-10 17:24 UTC (permalink / raw) To: dev; +Cc: Bruce Richardson, Kevin Laatz The rte_telemetry_init() function is for EAL use only, so can be moved to the internal header rather than being in the public one. Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> --- lib/librte_eal/freebsd/eal.c | 2 +- lib/librte_eal/linux/eal.c | 2 +- lib/librte_telemetry/rte_telemetry.h | 29 ----------------------- lib/librte_telemetry/telemetry_internal.h | 29 +++++++++++++++++++++++ 4 files changed, 31 insertions(+), 31 deletions(-) diff --git a/lib/librte_eal/freebsd/eal.c b/lib/librte_eal/freebsd/eal.c index b8a798bc7d..be02f70510 100644 --- a/lib/librte_eal/freebsd/eal.c +++ b/lib/librte_eal/freebsd/eal.c @@ -42,7 +42,7 @@ #include <rte_version.h> #include <rte_vfio.h> #include <malloc_heap.h> -#include <rte_telemetry.h> +#include <telemetry_internal.h> #include "eal_private.h" #include "eal_thread.h" diff --git a/lib/librte_eal/linux/eal.c b/lib/librte_eal/linux/eal.c index 23e3a32036..da2d6602a8 100644 --- a/lib/librte_eal/linux/eal.c +++ b/lib/librte_eal/linux/eal.c @@ -49,8 +49,8 @@ #include <rte_version.h> #include <malloc_heap.h> #include <rte_vfio.h> -#include <rte_telemetry.h> +#include <telemetry_internal.h> #include "eal_private.h" #include "eal_thread.h" #include "eal_internal_cfg.h" diff --git a/lib/librte_telemetry/rte_telemetry.h b/lib/librte_telemetry/rte_telemetry.h index 2c3da3ab7f..334ea8ddd4 100644 --- a/lib/librte_telemetry/rte_telemetry.h +++ b/lib/librte_telemetry/rte_telemetry.h @@ -292,35 +292,6 @@ __rte_experimental int rte_telemetry_register_cmd(const char *cmd, telemetry_cb fn, const char *help); -/** - * @internal - * Log function type, to allow passing as parameter if necessary - */ -typedef int (*rte_log_fn)(uint32_t level, uint32_t logtype, const char *format, ...); - -/** - * @internal - * Initialize Telemetry. - * - * @param runtime_dir - * The runtime directory of DPDK. - * @param cpuset - * The CPU set to be used for setting the thread affinity. - * @param log_fn - * Function pointer to the rte_log function for logging use - * @param registered_logtype - * The registered log type to use for logging - * - * @return - * 0 on success. - * @return - * -1 on failure. - */ -__rte_internal -int -rte_telemetry_init(const char *runtime_dir, rte_cpuset_t *cpuset, - rte_log_fn log_fn, uint32_t registered_logtype); - /** * Get a pointer to a container with memory allocated. The container is to be * used embedded within an existing telemetry dict/array. diff --git a/lib/librte_telemetry/telemetry_internal.h b/lib/librte_telemetry/telemetry_internal.h index ad076b9119..601f16cc96 100644 --- a/lib/librte_telemetry/telemetry_internal.h +++ b/lib/librte_telemetry/telemetry_internal.h @@ -84,4 +84,33 @@ rte_telemetry_legacy_register(const char *cmd, enum rte_telemetry_legacy_data_req data_req, telemetry_legacy_cb fn); +/** + * @internal + * Log function type, to allow passing as parameter if necessary + */ +typedef int (*rte_log_fn)(uint32_t level, uint32_t logtype, const char *format, ...); + +/** + * @internal + * Initialize Telemetry. + * + * @param runtime_dir + * The runtime directory of DPDK. + * @param cpuset + * The CPU set to be used for setting the thread affinity. + * @param log_fn + * Function pointer to the rte_log function for logging use + * @param registered_logtype + * The registered log type to use for logging + * + * @return + * 0 on success. + * @return + * -1 on failure. + */ +__rte_internal +int +rte_telemetry_init(const char *runtime_dir, rte_cpuset_t *cpuset, + rte_log_fn log_fn, uint32_t registered_logtype); + #endif -- 2.27.0 ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [dpdk-dev] [PATCH 4/4] telemetry: move init function to internal header 2021-03-10 17:24 ` [dpdk-dev] [PATCH 4/4] telemetry: move init function to internal header Bruce Richardson @ 2021-03-11 12:51 ` Power, Ciara 0 siblings, 0 replies; 19+ messages in thread From: Power, Ciara @ 2021-03-11 12:51 UTC (permalink / raw) To: Richardson, Bruce, dev; +Cc: Richardson, Bruce, Laatz, Kevin >-----Original Message----- >From: dev <dev-bounces@dpdk.org> On Behalf Of Bruce Richardson >Sent: Wednesday 10 March 2021 17:25 >To: dev@dpdk.org >Cc: Richardson, Bruce <bruce.richardson@intel.com>; Laatz, Kevin ><kevin.laatz@intel.com> >Subject: [dpdk-dev] [PATCH 4/4] telemetry: move init function to internal >header > >The rte_telemetry_init() function is for EAL use only, so can be moved to the >internal header rather than being in the public one. > >Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> >--- > lib/librte_eal/freebsd/eal.c | 2 +- > lib/librte_eal/linux/eal.c | 2 +- > lib/librte_telemetry/rte_telemetry.h | 29 ----------------------- > lib/librte_telemetry/telemetry_internal.h | 29 +++++++++++++++++++++++ > 4 files changed, 31 insertions(+), 31 deletions(-) > <snip> Acked-by: Ciara Power <ciara.power@intel.com> ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [dpdk-dev] [PATCH 0/4] telemetry logging improvements and cleanup 2021-03-10 17:24 [dpdk-dev] [PATCH 0/4] telemetry logging improvements and cleanup Bruce Richardson ` (3 preceding siblings ...) 2021-03-10 17:24 ` [dpdk-dev] [PATCH 4/4] telemetry: move init function to internal header Bruce Richardson @ 2021-03-24 21:11 ` Thomas Monjalon 2021-03-25 8:55 ` Bruce Richardson 2021-03-25 13:57 ` [dpdk-dev] [PATCH v2 " Bruce Richardson 5 siblings, 1 reply; 19+ messages in thread From: Thomas Monjalon @ 2021-03-24 21:11 UTC (permalink / raw) To: Bruce Richardson; +Cc: dev 10/03/2021 18:24, Bruce Richardson: > This set adds support for using the regular rte_log functions from the telemetry > library; avoiding circular dependencies by having EAL register the telemetry > library itself and then passing the required handles to that library as part of > the telemetry_init call. > > Beyond this change, the other three patches are cleanups to ensure that all > internal functions are clearly separate from the public APIs. (Patches 3 & 4 may > be merged into a single one on apply, for I've kept them separate for now for > clarity). > > Bruce Richardson (4): > telemetry: use rte_log for logging > telemetry: make the legacy registration function internal > telemetry: create internal-only header file > telemetry: move init function to internal header Now that your patch "eal: fix querying DPDK version at runtime" is in main branch, please could you rebase this series? ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [dpdk-dev] [PATCH 0/4] telemetry logging improvements and cleanup 2021-03-24 21:11 ` [dpdk-dev] [PATCH 0/4] telemetry logging improvements and cleanup Thomas Monjalon @ 2021-03-25 8:55 ` Bruce Richardson 0 siblings, 0 replies; 19+ messages in thread From: Bruce Richardson @ 2021-03-25 8:55 UTC (permalink / raw) To: Thomas Monjalon; +Cc: dev On Wed, Mar 24, 2021 at 10:11:55PM +0100, Thomas Monjalon wrote: > 10/03/2021 18:24, Bruce Richardson: > > This set adds support for using the regular rte_log functions from the telemetry > > library; avoiding circular dependencies by having EAL register the telemetry > > library itself and then passing the required handles to that library as part of > > the telemetry_init call. > > > > Beyond this change, the other three patches are cleanups to ensure that all > > internal functions are clearly separate from the public APIs. (Patches 3 & 4 may > > be merged into a single one on apply, for I've kept them separate for now for > > clarity). > > > > Bruce Richardson (4): > > telemetry: use rte_log for logging > > telemetry: make the legacy registration function internal > > telemetry: create internal-only header file > > telemetry: move init function to internal header > > Now that your patch "eal: fix querying DPDK version at runtime" > is in main branch, please could you rebase this series? > Sure, will do. ^ permalink raw reply [flat|nested] 19+ messages in thread
* [dpdk-dev] [PATCH v2 0/4] telemetry logging improvements and cleanup 2021-03-10 17:24 [dpdk-dev] [PATCH 0/4] telemetry logging improvements and cleanup Bruce Richardson ` (4 preceding siblings ...) 2021-03-24 21:11 ` [dpdk-dev] [PATCH 0/4] telemetry logging improvements and cleanup Thomas Monjalon @ 2021-03-25 13:57 ` Bruce Richardson 2021-03-25 13:57 ` [dpdk-dev] [PATCH v2 1/4] telemetry: use rte_log for logging Bruce Richardson ` (4 more replies) 5 siblings, 5 replies; 19+ messages in thread From: Bruce Richardson @ 2021-03-25 13:57 UTC (permalink / raw) To: dev; +Cc: Bruce Richardson This set adds support for using the regular rte_log functions from the telemetry library; avoiding circular dependencies by having EAL register the telemetry library itself and then passing the required handles to that library as part of the telemetry_init call. Beyond this change, the other three patches are cleanups to ensure that all internal functions are clearly separate from the public APIs. (Patches 3 & 4 may be merged into a single one on apply, for I've kept them separate for now for clarity). V2: Rebased on latest main branch. Bruce Richardson (4): telemetry: use rte_log for logging telemetry: make the legacy registration function internal telemetry: rename internal-only header file telemetry: move init function to internal header doc/guides/rel_notes/release_21_05.rst | 5 ++ lib/librte_eal/freebsd/eal.c | 12 +-- lib/librte_eal/linux/eal.c | 12 +-- lib/librte_metrics/rte_metrics_telemetry.c | 2 +- lib/librte_telemetry/rte_telemetry.h | 25 ------ lib/librte_telemetry/telemetry.c | 76 +++++++++---------- ...elemetry_legacy.h => telemetry_internal.h} | 41 +++++++++- lib/librte_telemetry/telemetry_legacy.c | 2 +- lib/librte_telemetry/version.map | 2 +- 9 files changed, 87 insertions(+), 90 deletions(-) rename lib/librte_telemetry/{rte_telemetry_legacy.h => telemetry_internal.h} (65%) -- 2.27.0 ^ permalink raw reply [flat|nested] 19+ messages in thread
* [dpdk-dev] [PATCH v2 1/4] telemetry: use rte_log for logging 2021-03-25 13:57 ` [dpdk-dev] [PATCH v2 " Bruce Richardson @ 2021-03-25 13:57 ` Bruce Richardson 2021-03-25 14:09 ` David Marchand 2021-03-25 13:57 ` [dpdk-dev] [PATCH v2 2/4] telemetry: make the legacy registration function internal Bruce Richardson ` (3 subsequent siblings) 4 siblings, 1 reply; 19+ messages in thread From: Bruce Richardson @ 2021-03-25 13:57 UTC (permalink / raw) To: dev; +Cc: Bruce Richardson, Ciara Power, Kevin Laatz Rather than passing back an error string to the caller, take as input the rte_log function to use, and just use regular logging. Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> Acked-by: Ciara Power <ciara.power@intel.com> --- lib/librte_eal/freebsd/eal.c | 10 ++-- lib/librte_eal/linux/eal.c | 10 ++-- lib/librte_telemetry/rte_telemetry.h | 15 ++++-- lib/librte_telemetry/telemetry.c | 74 +++++++++++++--------------- 4 files changed, 50 insertions(+), 59 deletions(-) diff --git a/lib/librte_eal/freebsd/eal.c b/lib/librte_eal/freebsd/eal.c index 62320d610..97ce9976c 100644 --- a/lib/librte_eal/freebsd/eal.c +++ b/lib/librte_eal/freebsd/eal.c @@ -941,16 +941,12 @@ rte_eal_init(int argc, char **argv) return -1; } if (!internal_conf->no_telemetry) { - const char *error_str = NULL; + uint32_t tlog = rte_log_register_type_and_pick_level( + "lib.telemetry", RTE_LOG_WARNING); if (rte_telemetry_init(rte_eal_get_runtime_dir(), rte_version(), - &internal_conf->ctrl_cpuset, &error_str) - != 0) { - rte_eal_init_alert(error_str); + &internal_conf->ctrl_cpuset, rte_log, tlog) != 0) return -1; - } - if (error_str != NULL) - RTE_LOG(NOTICE, EAL, "%s\n", error_str); } eal_mcfg_complete(); diff --git a/lib/librte_eal/linux/eal.c b/lib/librte_eal/linux/eal.c index 9ffb4b331..f6dd67b6d 100644 --- a/lib/librte_eal/linux/eal.c +++ b/lib/librte_eal/linux/eal.c @@ -1314,16 +1314,12 @@ rte_eal_init(int argc, char **argv) return -1; } if (!internal_conf->no_telemetry) { - const char *error_str = NULL; + uint32_t tlog = rte_log_register_type_and_pick_level( + "lib.telemetry", RTE_LOG_WARNING); if (rte_telemetry_init(rte_eal_get_runtime_dir(), rte_version(), - &internal_conf->ctrl_cpuset, &error_str) - != 0) { - rte_eal_init_alert(error_str); + &internal_conf->ctrl_cpuset, rte_log, tlog) != 0) return -1; - } - if (error_str != NULL) - RTE_LOG(NOTICE, EAL, "%s\n", error_str); } eal_mcfg_complete(); diff --git a/lib/librte_telemetry/rte_telemetry.h b/lib/librte_telemetry/rte_telemetry.h index 027b048d7..d38894b97 100644 --- a/lib/librte_telemetry/rte_telemetry.h +++ b/lib/librte_telemetry/rte_telemetry.h @@ -294,6 +294,12 @@ rte_telemetry_register_cmd(const char *cmd, telemetry_cb fn, const char *help); #ifdef RTE_HAS_CPUSET +/** + * @internal + * Log function type, to allow passing as parameter if necessary + */ +typedef int (*rte_log_fn)(uint32_t level, uint32_t logtype, const char *format, ...); + /** * @internal * Initialize Telemetry. @@ -302,9 +308,10 @@ rte_telemetry_register_cmd(const char *cmd, telemetry_cb fn, const char *help); * The runtime directory of DPDK. * @param cpuset * The CPU set to be used for setting the thread affinity. - * @param err_str - * This err_str pointer should point to NULL on entry. In the case of an error - * or warning, it will be non-NULL on exit. + * @param log_fn + * Function pointer to the rte_log function for logging use + * @param registered_logtype + * The registered log type to use for logging * * @return * 0 on success. @@ -314,7 +321,7 @@ rte_telemetry_register_cmd(const char *cmd, telemetry_cb fn, const char *help); __rte_internal int rte_telemetry_init(const char *runtime_dir, const char *rte_version, rte_cpuset_t *cpuset, - const char **err_str); + rte_log_fn log_fn, uint32_t registered_logtype); #endif /* RTE_HAS_CPUSET */ diff --git a/lib/librte_telemetry/telemetry.c b/lib/librte_telemetry/telemetry.c index 14b4ff5ea..042136b82 100644 --- a/lib/librte_telemetry/telemetry.c +++ b/lib/librte_telemetry/telemetry.c @@ -15,6 +15,7 @@ #include <rte_string_fns.h> #include <rte_common.h> #include <rte_spinlock.h> +#include <rte_log.h> #include "rte_telemetry.h" #include "telemetry_json.h" @@ -49,7 +50,14 @@ static struct socket v1_socket; /* socket for v1 telemetry */ #endif /* !RTE_EXEC_ENV_WINDOWS */ static const char *telemetry_version; /* save rte_version */ -static char telemetry_log_error[1024]; /* Will contain error on init failure */ +static const char *socket_dir; /* runtime directory */ +static rte_cpuset_t *thread_cpuset; +static rte_log_fn rte_log_ptr; +static uint32_t logtype; + +#define TMTY_LOG(l, ...) \ + rte_log_ptr(RTE_LOG_ ## l, logtype, "TELEMETRY: " __VA_ARGS__) + /* list of command callbacks, with one command registered by default */ static struct cmd_callback callbacks[TELEMETRY_MAX_CALLBACKS]; static int num_callbacks; /* How many commands are registered */ @@ -345,9 +353,7 @@ socket_listener(void *socket) struct socket *s = (struct socket *)socket; int s_accepted = accept(s->sock, NULL, NULL); if (s_accepted < 0) { - snprintf(telemetry_log_error, - sizeof(telemetry_log_error), - "Error with accept, telemetry thread quitting"); + TMTY_LOG(ERR, "Error with accept, telemetry thread quitting\n"); return NULL; } if (s->num_clients != NULL) { @@ -389,9 +395,7 @@ create_socket(char *path) { int sock = socket(AF_UNIX, SOCK_SEQPACKET, 0); if (sock < 0) { - snprintf(telemetry_log_error, sizeof(telemetry_log_error), - "Error with socket creation, %s", - strerror(errno)); + TMTY_LOG(ERR, "Error with socket creation, %s\n", strerror(errno)); return -1; } @@ -399,17 +403,13 @@ create_socket(char *path) strlcpy(sun.sun_path, path, sizeof(sun.sun_path)); unlink(sun.sun_path); if (bind(sock, (void *) &sun, sizeof(sun)) < 0) { - snprintf(telemetry_log_error, sizeof(telemetry_log_error), - "Error binding socket: %s", - strerror(errno)); + TMTY_LOG(ERR, "Error binding socket: %s\n", strerror(errno)); sun.sun_path[0] = 0; goto error; } if (listen(sock, 1) < 0) { - snprintf(telemetry_log_error, sizeof(telemetry_log_error), - "Error calling listen for socket: %s", - strerror(errno)); + TMTY_LOG(ERR, "Error calling listen for socket: %s\n", strerror(errno)); goto error; } @@ -422,35 +422,33 @@ create_socket(char *path) } static int -telemetry_legacy_init(const char *runtime_dir, rte_cpuset_t *cpuset) +telemetry_legacy_init(void) { pthread_t t_old; if (num_legacy_callbacks == 1) { - snprintf(telemetry_log_error, sizeof(telemetry_log_error), - "No legacy callbacks, legacy socket not created"); + TMTY_LOG(WARNING, "No legacy callbacks, legacy socket not created\n"); return -1; } v1_socket.fn = legacy_client_handler; if ((size_t) snprintf(v1_socket.path, sizeof(v1_socket.path), - "%s/telemetry", runtime_dir) - >= sizeof(v1_socket.path)) { - snprintf(telemetry_log_error, sizeof(telemetry_log_error), - "Error with socket binding, path too long"); + "%s/telemetry", socket_dir) >= sizeof(v1_socket.path)) { + TMTY_LOG(ERR, "Error with socket binding, path too long\n"); return -1; } v1_socket.sock = create_socket(v1_socket.path); if (v1_socket.sock < 0) return -1; pthread_create(&t_old, NULL, socket_listener, &v1_socket); - pthread_setaffinity_np(t_old, sizeof(*cpuset), cpuset); + pthread_setaffinity_np(t_old, sizeof(*thread_cpuset), thread_cpuset); + TMTY_LOG(DEBUG, "Legacy telemetry socket initialized ok\n"); return 0; } static int -telemetry_v2_init(const char *runtime_dir, rte_cpuset_t *cpuset) +telemetry_v2_init(void) { pthread_t t_new; @@ -462,10 +460,9 @@ telemetry_v2_init(const char *runtime_dir, rte_cpuset_t *cpuset) rte_telemetry_register_cmd("/help", command_help, "Returns help text for a command. Parameters: string command"); v2_socket.fn = client_handler; - if (strlcpy(v2_socket.path, get_socket_path(runtime_dir, 2), + if (strlcpy(v2_socket.path, get_socket_path(socket_dir, 2), sizeof(v2_socket.path)) >= sizeof(v2_socket.path)) { - snprintf(telemetry_log_error, sizeof(telemetry_log_error), - "Error with socket binding, path too long"); + TMTY_LOG(ERR, "Error with socket binding, path too long\n"); return -1; } @@ -473,7 +470,7 @@ telemetry_v2_init(const char *runtime_dir, rte_cpuset_t *cpuset) if (v2_socket.sock < 0) return -1; pthread_create(&t_new, NULL, socket_listener, &v2_socket); - pthread_setaffinity_np(t_new, sizeof(*cpuset), cpuset); + pthread_setaffinity_np(t_new, sizeof(*thread_cpuset), thread_cpuset); atexit(unlink_sockets); return 0; @@ -482,25 +479,20 @@ telemetry_v2_init(const char *runtime_dir, rte_cpuset_t *cpuset) #endif /* !RTE_EXEC_ENV_WINDOWS */ int32_t -rte_telemetry_init(const char *runtime_dir, const char *rte_version, - rte_cpuset_t *cpuset, const char **err_str) +rte_telemetry_init(const char *runtime_dir, const char *rte_version, rte_cpuset_t *cpuset, + rte_log_fn log_fn, uint32_t registered_logtype) { telemetry_version = rte_version; + socket_dir = runtime_dir; + thread_cpuset = cpuset; + rte_log_ptr = log_fn; + logtype = registered_logtype; + #ifndef RTE_EXEC_ENV_WINDOWS - if (telemetry_v2_init(runtime_dir, cpuset) != 0) { - *err_str = telemetry_log_error; + if (telemetry_v2_init() != 0) return -1; - } - if (telemetry_legacy_init(runtime_dir, cpuset) != 0) { - *err_str = telemetry_log_error; - } -#else /* RTE_EXEC_ENV_WINDOWS */ - RTE_SET_USED(runtime_dir); - RTE_SET_USED(cpuset); - RTE_SET_USED(err_str); - - snprintf(telemetry_log_error, sizeof(telemetry_log_error), - "DPDK Telemetry is not supported on Windows."); + TMTY_LOG(DEBUG, "Telemetry initialized ok\n"); + telemetry_legacy_init(); #endif /* RTE_EXEC_ENV_WINDOWS */ return 0; -- 2.27.0 ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [dpdk-dev] [PATCH v2 1/4] telemetry: use rte_log for logging 2021-03-25 13:57 ` [dpdk-dev] [PATCH v2 1/4] telemetry: use rte_log for logging Bruce Richardson @ 2021-03-25 14:09 ` David Marchand 2021-03-25 14:16 ` Bruce Richardson 0 siblings, 1 reply; 19+ messages in thread From: David Marchand @ 2021-03-25 14:09 UTC (permalink / raw) To: Bruce Richardson, Thomas Monjalon; +Cc: dev, Ciara Power, Kevin Laatz On Thu, Mar 25, 2021 at 2:57 PM Bruce Richardson <bruce.richardson@intel.com> wrote: > > Rather than passing back an error string to the caller, take as input the > rte_log function to use, and just use regular logging. > > Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> > Acked-by: Ciara Power <ciara.power@intel.com> I guess this replaces http://patchwork.dpdk.org/project/dpdk/patch/20210308222339.819494-1-thomas@monjalon.net/ ? -- David Marchand ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [dpdk-dev] [PATCH v2 1/4] telemetry: use rte_log for logging 2021-03-25 14:09 ` David Marchand @ 2021-03-25 14:16 ` Bruce Richardson 0 siblings, 0 replies; 19+ messages in thread From: Bruce Richardson @ 2021-03-25 14:16 UTC (permalink / raw) To: David Marchand; +Cc: Thomas Monjalon, dev, Ciara Power, Kevin Laatz On Thu, Mar 25, 2021 at 03:09:32PM +0100, David Marchand wrote: > On Thu, Mar 25, 2021 at 2:57 PM Bruce Richardson > <bruce.richardson@intel.com> wrote: > > > > Rather than passing back an error string to the caller, take as input the > > rte_log function to use, and just use regular logging. > > > > Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> > > Acked-by: Ciara Power <ciara.power@intel.com> > > I guess this replaces > http://patchwork.dpdk.org/project/dpdk/patch/20210308222339.819494-1-thomas@monjalon.net/ > ? Yes, it would do. ^ permalink raw reply [flat|nested] 19+ messages in thread
* [dpdk-dev] [PATCH v2 2/4] telemetry: make the legacy registration function internal 2021-03-25 13:57 ` [dpdk-dev] [PATCH v2 " Bruce Richardson 2021-03-25 13:57 ` [dpdk-dev] [PATCH v2 1/4] telemetry: use rte_log for logging Bruce Richardson @ 2021-03-25 13:57 ` Bruce Richardson 2021-03-25 13:57 ` [dpdk-dev] [PATCH v2 3/4] telemetry: rename internal-only header file Bruce Richardson ` (2 subsequent siblings) 4 siblings, 0 replies; 19+ messages in thread From: Bruce Richardson @ 2021-03-25 13:57 UTC (permalink / raw) To: dev; +Cc: Bruce Richardson, Ciara Power, Kevin Laatz, Ray Kinsella, Neil Horman The function for registration of callbacks for legacy telemetry was documented as internal-only in the API documents, but marked as experimental in the version.map file. Since this is an internal-only function, for consistency we update the version mapping to have it as internal. Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> Acked-by: Ciara Power <ciara.power@intel.com> --- doc/guides/rel_notes/release_21_05.rst | 5 +++++ lib/librte_telemetry/rte_telemetry_legacy.h | 2 +- lib/librte_telemetry/version.map | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/doc/guides/rel_notes/release_21_05.rst b/doc/guides/rel_notes/release_21_05.rst index 8e686cc62..fb965fec3 100644 --- a/doc/guides/rel_notes/release_21_05.rst +++ b/doc/guides/rel_notes/release_21_05.rst @@ -148,6 +148,11 @@ ABI Changes * No ABI change that would break compatibility with 20.11. +* The experimental function ``rte_telemetry_legacy_register`` has been + removed from the public API and is now an internal-only function. This + function was already marked as internal in the API documentation for it, + and was not for use by external applications. + Known Issues ------------ diff --git a/lib/librte_telemetry/rte_telemetry_legacy.h b/lib/librte_telemetry/rte_telemetry_legacy.h index c83f9a8d9..fb4474018 100644 --- a/lib/librte_telemetry/rte_telemetry_legacy.h +++ b/lib/librte_telemetry/rte_telemetry_legacy.h @@ -78,7 +78,7 @@ legacy_client_handler(void *sock_id); * @return * -ENOENT if max callbacks limit has been reached. */ -__rte_experimental +__rte_internal int rte_telemetry_legacy_register(const char *cmd, enum rte_telemetry_legacy_data_req data_req, diff --git a/lib/librte_telemetry/version.map b/lib/librte_telemetry/version.map index ec0ebc1be..bde80ce29 100644 --- a/lib/librte_telemetry/version.map +++ b/lib/librte_telemetry/version.map @@ -14,12 +14,12 @@ EXPERIMENTAL { rte_tel_data_start_array; rte_tel_data_start_dict; rte_tel_data_string; - rte_telemetry_legacy_register; rte_telemetry_register_cmd; local: *; }; INTERNAL { + rte_telemetry_legacy_register; rte_telemetry_init; }; -- 2.27.0 ^ permalink raw reply [flat|nested] 19+ messages in thread
* [dpdk-dev] [PATCH v2 3/4] telemetry: rename internal-only header file 2021-03-25 13:57 ` [dpdk-dev] [PATCH v2 " Bruce Richardson 2021-03-25 13:57 ` [dpdk-dev] [PATCH v2 1/4] telemetry: use rte_log for logging Bruce Richardson 2021-03-25 13:57 ` [dpdk-dev] [PATCH v2 2/4] telemetry: make the legacy registration function internal Bruce Richardson @ 2021-03-25 13:57 ` Bruce Richardson 2021-03-25 13:57 ` [dpdk-dev] [PATCH v2 4/4] telemetry: move init function to internal header Bruce Richardson 2021-03-25 16:36 ` [dpdk-dev] [PATCH v2 0/4] telemetry logging improvements and cleanup Thomas Monjalon 4 siblings, 0 replies; 19+ messages in thread From: Bruce Richardson @ 2021-03-25 13:57 UTC (permalink / raw) To: dev; +Cc: Bruce Richardson, Ciara Power, Kevin Laatz The header file containing the legacy telemetry function prototypes was all internal-only, so we rename the file to be an internal-only one to make it clearer it's not for installation. Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> Acked-by: Ciara Power <ciara.power@intel.com> --- lib/librte_metrics/rte_metrics_telemetry.c | 2 +- lib/librte_telemetry/telemetry.c | 2 +- .../{rte_telemetry_legacy.h => telemetry_internal.h} | 6 +++--- lib/librte_telemetry/telemetry_legacy.c | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) rename lib/librte_telemetry/{rte_telemetry_legacy.h => telemetry_internal.h} (93%) diff --git a/lib/librte_metrics/rte_metrics_telemetry.c b/lib/librte_metrics/rte_metrics_telemetry.c index 795bd29fe..c24990d92 100644 --- a/lib/librte_metrics/rte_metrics_telemetry.c +++ b/lib/librte_metrics/rte_metrics_telemetry.c @@ -5,7 +5,7 @@ #include <rte_ethdev.h> #include <rte_string_fns.h> #ifdef RTE_LIB_TELEMETRY -#include <rte_telemetry_legacy.h> +#include <telemetry_internal.h> #endif #include "rte_metrics.h" diff --git a/lib/librte_telemetry/telemetry.c b/lib/librte_telemetry/telemetry.c index 042136b82..7e08afd22 100644 --- a/lib/librte_telemetry/telemetry.c +++ b/lib/librte_telemetry/telemetry.c @@ -20,7 +20,7 @@ #include "rte_telemetry.h" #include "telemetry_json.h" #include "telemetry_data.h" -#include "rte_telemetry_legacy.h" +#include "telemetry_internal.h" #define MAX_CMD_LEN 56 #define MAX_HELP_LEN 64 diff --git a/lib/librte_telemetry/rte_telemetry_legacy.h b/lib/librte_telemetry/telemetry_internal.h similarity index 93% rename from lib/librte_telemetry/rte_telemetry_legacy.h rename to lib/librte_telemetry/telemetry_internal.h index fb4474018..ad076b911 100644 --- a/lib/librte_telemetry/rte_telemetry_legacy.h +++ b/lib/librte_telemetry/telemetry_internal.h @@ -2,8 +2,8 @@ * Copyright(c) 2020 Intel Corporation */ -#ifndef _RTE_TELEMETRY_LEGACY_H_ -#define _RTE_TELEMETRY_LEGACY_H_ +#ifndef _RTE_TELEMETRY_INTERNAL_H_ +#define _RTE_TELEMETRY_INTERNAL_H_ #include <rte_compat.h> #include "rte_telemetry.h" @@ -14,7 +14,7 @@ * @b EXPERIMENTAL: this API may change without prior notice * @file - * RTE Telemetry Legacy + * RTE Telemetry Legacy and internal definitions * ***/ diff --git a/lib/librte_telemetry/telemetry_legacy.c b/lib/librte_telemetry/telemetry_legacy.c index edd76ca35..5e9af37db 100644 --- a/lib/librte_telemetry/telemetry_legacy.c +++ b/lib/librte_telemetry/telemetry_legacy.c @@ -15,7 +15,7 @@ #include <rte_common.h> #include <rte_spinlock.h> -#include "rte_telemetry_legacy.h" +#include "telemetry_internal.h" #define MAX_LEN 128 #define BUF_SIZE 1024 -- 2.27.0 ^ permalink raw reply [flat|nested] 19+ messages in thread
* [dpdk-dev] [PATCH v2 4/4] telemetry: move init function to internal header 2021-03-25 13:57 ` [dpdk-dev] [PATCH v2 " Bruce Richardson ` (2 preceding siblings ...) 2021-03-25 13:57 ` [dpdk-dev] [PATCH v2 3/4] telemetry: rename internal-only header file Bruce Richardson @ 2021-03-25 13:57 ` Bruce Richardson 2021-03-25 16:36 ` [dpdk-dev] [PATCH v2 0/4] telemetry logging improvements and cleanup Thomas Monjalon 4 siblings, 0 replies; 19+ messages in thread From: Bruce Richardson @ 2021-03-25 13:57 UTC (permalink / raw) To: dev; +Cc: Bruce Richardson, Ciara Power, Kevin Laatz The rte_telemetry_init() function is for EAL use only, so can be moved to the internal header rather than being in the public one. Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> Acked-by: Ciara Power <ciara.power@intel.com> --- lib/librte_eal/freebsd/eal.c | 2 +- lib/librte_eal/linux/eal.c | 2 +- lib/librte_telemetry/rte_telemetry.h | 32 ---------------------- lib/librte_telemetry/telemetry_internal.h | 33 +++++++++++++++++++++++ 4 files changed, 35 insertions(+), 34 deletions(-) diff --git a/lib/librte_eal/freebsd/eal.c b/lib/librte_eal/freebsd/eal.c index 97ce9976c..32442e5ba 100644 --- a/lib/librte_eal/freebsd/eal.c +++ b/lib/librte_eal/freebsd/eal.c @@ -42,7 +42,7 @@ #include <rte_version.h> #include <rte_vfio.h> #include <malloc_heap.h> -#include <rte_telemetry.h> +#include <telemetry_internal.h> #include "eal_private.h" #include "eal_thread.h" diff --git a/lib/librte_eal/linux/eal.c b/lib/librte_eal/linux/eal.c index f6dd67b6d..abbb53774 100644 --- a/lib/librte_eal/linux/eal.c +++ b/lib/librte_eal/linux/eal.c @@ -49,8 +49,8 @@ #include <rte_version.h> #include <malloc_heap.h> #include <rte_vfio.h> -#include <rte_telemetry.h> +#include <telemetry_internal.h> #include "eal_private.h" #include "eal_thread.h" #include "eal_internal_cfg.h" diff --git a/lib/librte_telemetry/rte_telemetry.h b/lib/librte_telemetry/rte_telemetry.h index d38894b97..fd57718c2 100644 --- a/lib/librte_telemetry/rte_telemetry.h +++ b/lib/librte_telemetry/rte_telemetry.h @@ -292,38 +292,6 @@ __rte_experimental int rte_telemetry_register_cmd(const char *cmd, telemetry_cb fn, const char *help); -#ifdef RTE_HAS_CPUSET - -/** - * @internal - * Log function type, to allow passing as parameter if necessary - */ -typedef int (*rte_log_fn)(uint32_t level, uint32_t logtype, const char *format, ...); - -/** - * @internal - * Initialize Telemetry. - * - * @param runtime_dir - * The runtime directory of DPDK. - * @param cpuset - * The CPU set to be used for setting the thread affinity. - * @param log_fn - * Function pointer to the rte_log function for logging use - * @param registered_logtype - * The registered log type to use for logging - * - * @return - * 0 on success. - * @return - * -1 on failure. - */ -__rte_internal -int -rte_telemetry_init(const char *runtime_dir, const char *rte_version, rte_cpuset_t *cpuset, - rte_log_fn log_fn, uint32_t registered_logtype); - -#endif /* RTE_HAS_CPUSET */ /** * Get a pointer to a container with memory allocated. The container is to be diff --git a/lib/librte_telemetry/telemetry_internal.h b/lib/librte_telemetry/telemetry_internal.h index ad076b911..6c5200604 100644 --- a/lib/librte_telemetry/telemetry_internal.h +++ b/lib/librte_telemetry/telemetry_internal.h @@ -84,4 +84,37 @@ rte_telemetry_legacy_register(const char *cmd, enum rte_telemetry_legacy_data_req data_req, telemetry_legacy_cb fn); +#ifdef RTE_HAS_CPUSET + +/** + * @internal + * Log function type, to allow passing as parameter if necessary + */ +typedef int (*rte_log_fn)(uint32_t level, uint32_t logtype, const char *format, ...); + +/** + * @internal + * Initialize Telemetry. + * + * @param runtime_dir + * The runtime directory of DPDK. + * @param cpuset + * The CPU set to be used for setting the thread affinity. + * @param log_fn + * Function pointer to the rte_log function for logging use + * @param registered_logtype + * The registered log type to use for logging + * + * @return + * 0 on success. + * @return + * -1 on failure. + */ +__rte_internal +int +rte_telemetry_init(const char *runtime_dir, const char *rte_version, rte_cpuset_t *cpuset, + rte_log_fn log_fn, uint32_t registered_logtype); + +#endif /* RTE_HAS_CPUSET */ + #endif -- 2.27.0 ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [dpdk-dev] [PATCH v2 0/4] telemetry logging improvements and cleanup 2021-03-25 13:57 ` [dpdk-dev] [PATCH v2 " Bruce Richardson ` (3 preceding siblings ...) 2021-03-25 13:57 ` [dpdk-dev] [PATCH v2 4/4] telemetry: move init function to internal header Bruce Richardson @ 2021-03-25 16:36 ` Thomas Monjalon 4 siblings, 0 replies; 19+ messages in thread From: Thomas Monjalon @ 2021-03-25 16:36 UTC (permalink / raw) To: Bruce Richardson; +Cc: dev 25/03/2021 14:57, Bruce Richardson: > This set adds support for using the regular rte_log functions from the telemetry > library; avoiding circular dependencies by having EAL register the telemetry > library itself and then passing the required handles to that library as part of > the telemetry_init call. > > Beyond this change, the other three patches are cleanups to ensure that all > internal functions are clearly separate from the public APIs. (Patches 3 & 4 may > be merged into a single one on apply, for I've kept them separate for now for > clarity). > > V2: Rebased on latest main branch. > > Bruce Richardson (4): > telemetry: use rte_log for logging > telemetry: make the legacy registration function internal > telemetry: rename internal-only header file > telemetry: move init function to internal header Applied, thanks. ^ permalink raw reply [flat|nested] 19+ messages in thread
end of thread, other threads:[~2021-03-25 16:36 UTC | newest] Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-03-10 17:24 [dpdk-dev] [PATCH 0/4] telemetry logging improvements and cleanup Bruce Richardson 2021-03-10 17:24 ` [dpdk-dev] [PATCH 1/4] telemetry: use rte_log for logging Bruce Richardson 2021-03-11 12:50 ` Power, Ciara 2021-03-10 17:24 ` [dpdk-dev] [PATCH 2/4] telemetry: make the legacy registration function internal Bruce Richardson 2021-03-11 12:50 ` Power, Ciara 2021-03-10 17:24 ` [dpdk-dev] [PATCH 3/4] telemetry: create internal-only header file Bruce Richardson 2021-03-11 12:51 ` Power, Ciara 2021-03-10 17:24 ` [dpdk-dev] [PATCH 4/4] telemetry: move init function to internal header Bruce Richardson 2021-03-11 12:51 ` Power, Ciara 2021-03-24 21:11 ` [dpdk-dev] [PATCH 0/4] telemetry logging improvements and cleanup Thomas Monjalon 2021-03-25 8:55 ` Bruce Richardson 2021-03-25 13:57 ` [dpdk-dev] [PATCH v2 " Bruce Richardson 2021-03-25 13:57 ` [dpdk-dev] [PATCH v2 1/4] telemetry: use rte_log for logging Bruce Richardson 2021-03-25 14:09 ` David Marchand 2021-03-25 14:16 ` Bruce Richardson 2021-03-25 13:57 ` [dpdk-dev] [PATCH v2 2/4] telemetry: make the legacy registration function internal Bruce Richardson 2021-03-25 13:57 ` [dpdk-dev] [PATCH v2 3/4] telemetry: rename internal-only header file Bruce Richardson 2021-03-25 13:57 ` [dpdk-dev] [PATCH v2 4/4] telemetry: move init function to internal header Bruce Richardson 2021-03-25 16:36 ` [dpdk-dev] [PATCH v2 0/4] telemetry logging improvements and cleanup Thomas Monjalon
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).