From patchwork Tue Dec 13 18:27:24 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bruce Richardson X-Patchwork-Id: 120844 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id E5E1EA0540; Tue, 13 Dec 2022 19:27:57 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 425DF40684; Tue, 13 Dec 2022 19:27:55 +0100 (CET) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by mails.dpdk.org (Postfix) with ESMTP id 53AA84021D for ; Tue, 13 Dec 2022 19:27:52 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1670956072; x=1702492072; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=O2M/cAASkc+5YKcLvG51owzFzrKAGLi80iy+2nUVA/o=; b=K7oWa7uowFOR+LIcnfllk5Nmbrh6XUOrpJZx+c/FRqHFdqQ6YuQvH3jj cYEcPpj0kZwR2A5VWXHKOWbQrDcol+3OTeFIPzHmvkBNYMZ66lYPvp5JU LdjUZNBPhSadXn4r5jezSJy/DKTb67dtmx6HJxPB4OwK9YtqFpjh2MsGI qPjxN+0Z9DIMhH8biolv7tl+mOJ9LrDEmE0AqigkhRAkw0Nk2Qr7LaJLs 63R9F89IWDI7nVdLNwIxwcHD8WLNzRvhLayhn33hDR6bpUgWsfBWscsMh Oso+5PABSvpTaHJU6FiSYnmddGcKcUbLZWpB+ZWbG0tVXsp+ZMajssI5N w==; X-IronPort-AV: E=McAfee;i="6500,9779,10560"; a="382506960" X-IronPort-AV: E=Sophos;i="5.96,242,1665471600"; d="scan'208";a="382506960" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Dec 2022 10:27:47 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10560"; a="626445183" X-IronPort-AV: E=Sophos;i="5.96,242,1665471600"; d="scan'208";a="626445183" Received: from silpixa00401459.ir.intel.com (HELO silpixa00401459.ger.corp.intel.com) ([10.237.223.55]) by orsmga006.jf.intel.com with ESMTP; 13 Dec 2022 10:27:45 -0800 From: Bruce Richardson To: dev@dpdk.org Cc: Bruce Richardson , =?utf-8?q?Morten_Br=C3=B8?= =?utf-8?q?rup?= Subject: [RFC PATCH 1/7] telemetry: rename unsigned 64-bit enum value to uint Date: Tue, 13 Dec 2022 18:27:24 +0000 Message-Id: <20221213182730.97065-2-bruce.richardson@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221213182730.97065-1-bruce.richardson@intel.com> References: <20221213182730.97065-1-bruce.richardson@intel.com> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org For telemetry data, rather than having unsigned 64-bit values and signed 32-bit values, we want to just have unsigned and signed values, each stored with the max bit-width i.e. 64-bits. To that end, we rename the U64 enum entry to "UINT" to have a more generic name For backward API-level compatibility, we can use a macro to alias the old name to the new. Suggested-by: Morten Brørup Signed-off-by: Bruce Richardson --- app/test/test_telemetry_data.c | 10 +++++----- drivers/net/cnxk/cnxk_ethdev_sec_telemetry.c | 4 ++-- drivers/net/cnxk/cnxk_ethdev_telemetry.c | 2 +- lib/cryptodev/rte_cryptodev.c | 2 +- lib/ethdev/rte_ethdev.c | 2 +- lib/ipsec/ipsec_telemetry.c | 2 +- lib/security/rte_security.c | 4 ++-- lib/telemetry/rte_telemetry.h | 6 ++++-- lib/telemetry/telemetry.c | 4 ++-- lib/telemetry/telemetry_data.c | 4 ++-- 10 files changed, 21 insertions(+), 19 deletions(-) diff --git a/app/test/test_telemetry_data.c b/app/test/test_telemetry_data.c index d92667a527..24a2035b61 100644 --- a/app/test/test_telemetry_data.c +++ b/app/test/test_telemetry_data.c @@ -283,7 +283,7 @@ test_case_array_u64(void) { int i; - rte_tel_data_start_array(&response_data, RTE_TEL_U64_VAL); + rte_tel_data_start_array(&response_data, RTE_TEL_UINT_VAL); for (i = 0; i < 5; i++) rte_tel_data_add_array_u64(&response_data, i); return CHECK_OUTPUT("[0,1,2,3,4]"); @@ -310,10 +310,10 @@ test_dict_with_array_u64_values(void) int i; struct rte_tel_data *child_data = rte_tel_data_alloc(); - rte_tel_data_start_array(child_data, RTE_TEL_U64_VAL); + rte_tel_data_start_array(child_data, RTE_TEL_UINT_VAL); struct rte_tel_data *child_data2 = rte_tel_data_alloc(); - rte_tel_data_start_array(child_data2, RTE_TEL_U64_VAL); + rte_tel_data_start_array(child_data2, RTE_TEL_UINT_VAL); rte_tel_data_start_dict(&response_data); @@ -336,10 +336,10 @@ test_array_with_array_u64_values(void) int i; struct rte_tel_data *child_data = rte_tel_data_alloc(); - rte_tel_data_start_array(child_data, RTE_TEL_U64_VAL); + rte_tel_data_start_array(child_data, RTE_TEL_UINT_VAL); struct rte_tel_data *child_data2 = rte_tel_data_alloc(); - rte_tel_data_start_array(child_data2, RTE_TEL_U64_VAL); + rte_tel_data_start_array(child_data2, RTE_TEL_UINT_VAL); rte_tel_data_start_array(&response_data, RTE_TEL_CONTAINER); diff --git a/drivers/net/cnxk/cnxk_ethdev_sec_telemetry.c b/drivers/net/cnxk/cnxk_ethdev_sec_telemetry.c index 8e6277cbcd..59f0cce5ab 100644 --- a/drivers/net/cnxk/cnxk_ethdev_sec_telemetry.c +++ b/drivers/net/cnxk/cnxk_ethdev_sec_telemetry.c @@ -94,7 +94,7 @@ copy_outb_sa_10k(struct rte_tel_data *d, uint32_t i, void *sa) return -ENOMEM; } - rte_tel_data_start_array(outer_hdr, RTE_TEL_U64_VAL); + rte_tel_data_start_array(outer_hdr, RTE_TEL_UINT_VAL); for (j = 0; j < RTE_DIM(out_sa->outer_hdr.ipv6.src_addr); j++) rte_tel_data_add_array_u64(outer_hdr, @@ -167,7 +167,7 @@ copy_inb_sa_10k(struct rte_tel_data *d, uint32_t i, void *sa) return -ENOMEM; } - rte_tel_data_start_array(outer_hdr, RTE_TEL_U64_VAL); + rte_tel_data_start_array(outer_hdr, RTE_TEL_UINT_VAL); for (j = 0; j < RTE_DIM(in_sa->outer_hdr.ipv6.src_addr); j++) rte_tel_data_add_array_u64(outer_hdr, diff --git a/drivers/net/cnxk/cnxk_ethdev_telemetry.c b/drivers/net/cnxk/cnxk_ethdev_telemetry.c index 180108ab9c..5db973d620 100644 --- a/drivers/net/cnxk/cnxk_ethdev_telemetry.c +++ b/drivers/net/cnxk/cnxk_ethdev_telemetry.c @@ -52,7 +52,7 @@ ethdev_tel_handle_info(const char *cmd __rte_unused, i_data = rte_tel_data_alloc(); if (i_data == NULL) return -ENOMEM; - rte_tel_data_start_array(i_data, RTE_TEL_U64_VAL); + rte_tel_data_start_array(i_data, RTE_TEL_UINT_VAL); for (i = 0; i < RTE_MAX_ETHPORTS; i++) { /* Skip if port is unused */ diff --git a/lib/cryptodev/rte_cryptodev.c b/lib/cryptodev/rte_cryptodev.c index 2165a0688c..79ea958db4 100644 --- a/lib/cryptodev/rte_cryptodev.c +++ b/lib/cryptodev/rte_cryptodev.c @@ -2744,7 +2744,7 @@ crypto_caps_array(struct rte_tel_data *d, uint64_t caps_val[CRYPTO_CAPS_SZ]; unsigned int i = 0, j; - rte_tel_data_start_array(d, RTE_TEL_U64_VAL); + rte_tel_data_start_array(d, RTE_TEL_UINT_VAL); while ((dev_caps = &capabilities[i++])->op != RTE_CRYPTO_OP_TYPE_UNDEFINED) { diff --git a/lib/ethdev/rte_ethdev.c b/lib/ethdev/rte_ethdev.c index 5d5e18db1e..28028e5de5 100644 --- a/lib/ethdev/rte_ethdev.c +++ b/lib/ethdev/rte_ethdev.c @@ -5818,7 +5818,7 @@ eth_dev_add_port_queue_stats(struct rte_tel_data *d, uint64_t *q_stats, struct rte_tel_data *q_data = rte_tel_data_alloc(); if (q_data == NULL) return; - rte_tel_data_start_array(q_data, RTE_TEL_U64_VAL); + rte_tel_data_start_array(q_data, RTE_TEL_UINT_VAL); for (q = 0; q < RTE_ETHDEV_QUEUE_STAT_CNTRS; q++) rte_tel_data_add_array_u64(q_data, q_stats[q]); rte_tel_data_add_dict_container(d, stat_name, q_data, 0); diff --git a/lib/ipsec/ipsec_telemetry.c b/lib/ipsec/ipsec_telemetry.c index cfebf454d6..b184e8df99 100644 --- a/lib/ipsec/ipsec_telemetry.c +++ b/lib/ipsec/ipsec_telemetry.c @@ -22,7 +22,7 @@ handle_telemetry_cmd_ipsec_sa_list(const char *cmd __rte_unused, struct rte_tel_data *data) { struct ipsec_telemetry_entry *entry; - rte_tel_data_start_array(data, RTE_TEL_U64_VAL); + rte_tel_data_start_array(data, RTE_TEL_UINT_VAL); LIST_FOREACH(entry, &ipsec_telemetry_list, next) { const struct rte_ipsec_sa *sa = entry->sa; diff --git a/lib/security/rte_security.c b/lib/security/rte_security.c index 29af5f3e4b..68063f6450 100644 --- a/lib/security/rte_security.c +++ b/lib/security/rte_security.c @@ -316,7 +316,7 @@ crypto_caps_array(struct rte_tel_data *d, uint64_t caps_val[CRYPTO_CAPS_SZ]; unsigned int i = 0, j; - rte_tel_data_start_array(d, RTE_TEL_U64_VAL); + rte_tel_data_start_array(d, RTE_TEL_UINT_VAL); while ((dev_caps = &capabilities[i++])->op != RTE_CRYPTO_OP_TYPE_UNDEFINED) { @@ -341,7 +341,7 @@ sec_caps_array(struct rte_tel_data *d, uint64_t caps_val[SEC_CAPS_SZ]; unsigned int i = 0, j; - rte_tel_data_start_array(d, RTE_TEL_U64_VAL); + rte_tel_data_start_array(d, RTE_TEL_UINT_VAL); while ((dev_caps = &capabilities[i++])->action != RTE_SECURITY_ACTION_TYPE_NONE) { diff --git a/lib/telemetry/rte_telemetry.h b/lib/telemetry/rte_telemetry.h index d9918c4e96..c2ad65effe 100644 --- a/lib/telemetry/rte_telemetry.h +++ b/lib/telemetry/rte_telemetry.h @@ -43,10 +43,12 @@ struct rte_tel_data; enum rte_tel_value_type { RTE_TEL_STRING_VAL, /** a string value */ RTE_TEL_INT_VAL, /** a signed 32-bit int value */ - RTE_TEL_U64_VAL, /** an unsigned 64-bit int value */ + RTE_TEL_UINT_VAL, /** an unsigned 64-bit int value */ RTE_TEL_CONTAINER, /** a container struct */ }; +#define RTE_TEL_U64_VAL RTE_TEL_UINT_VAL + /** * Start an array of the specified type for returning from a callback * @@ -121,7 +123,7 @@ rte_tel_data_add_array_int(struct rte_tel_data *d, int x); /** * Add a uint64_t to an array. * The array must have been started by rte_tel_data_start_array() with - * RTE_TEL_U64_VAL as the type parameter. + * RTE_TEL_UINT_VAL as the type parameter. * * @param d * The data structure passed to the callback diff --git a/lib/telemetry/telemetry.c b/lib/telemetry/telemetry.c index 8fbb4f3060..75957fe0b1 100644 --- a/lib/telemetry/telemetry.c +++ b/lib/telemetry/telemetry.c @@ -201,7 +201,7 @@ container_to_json(const struct rte_tel_data *d, char *out_buf, size_t buf_len) buf_len, used, v->name, v->value.ival); break; - case RTE_TEL_U64_VAL: + case RTE_TEL_UINT_VAL: used = rte_tel_json_add_obj_u64(out_buf, buf_len, used, v->name, v->value.u64val); @@ -268,7 +268,7 @@ output_json(const char *cmd, const struct rte_tel_data *d, int s) buf_len, used, v->name, v->value.ival); break; - case RTE_TEL_U64_VAL: + case RTE_TEL_UINT_VAL: used = rte_tel_json_add_obj_u64(cb_data_buf, buf_len, used, v->name, v->value.u64val); diff --git a/lib/telemetry/telemetry_data.c b/lib/telemetry/telemetry_data.c index 34366ecee3..3c996484ec 100644 --- a/lib/telemetry/telemetry_data.c +++ b/lib/telemetry/telemetry_data.c @@ -18,7 +18,7 @@ rte_tel_data_start_array(struct rte_tel_data *d, enum rte_tel_value_type type) enum tel_container_types array_types[] = { RTE_TEL_ARRAY_STRING, /* RTE_TEL_STRING_VAL = 0 */ RTE_TEL_ARRAY_INT, /* RTE_TEL_INT_VAL = 1 */ - RTE_TEL_ARRAY_U64, /* RTE_TEL_u64_VAL = 2 */ + RTE_TEL_ARRAY_U64, /* RTE_TEL_UINT_VAL = 2 */ RTE_TEL_ARRAY_CONTAINER, /* RTE_TEL_CONTAINER = 3 */ }; d->type = array_types[type]; @@ -173,7 +173,7 @@ rte_tel_data_add_dict_u64(struct rte_tel_data *d, return -EINVAL; d->data_len++; - e->type = RTE_TEL_U64_VAL; + e->type = RTE_TEL_UINT_VAL; e->value.u64val = val; const size_t bytes = strlcpy(e->name, name, RTE_TEL_MAX_STRING_LEN); return bytes < RTE_TEL_MAX_STRING_LEN ? 0 : E2BIG; From patchwork Tue Dec 13 18:27:25 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bruce Richardson X-Patchwork-Id: 120845 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 1058AA0540; Tue, 13 Dec 2022 19:28:04 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1CA6F42D14; Tue, 13 Dec 2022 19:27:56 +0100 (CET) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by mails.dpdk.org (Postfix) with ESMTP id 7903240395 for ; Tue, 13 Dec 2022 19:27:52 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1670956072; x=1702492072; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=1ZlSCmE6rLgBKAzZa/5dlBUfdH1XcgztWfRX2KaokMg=; b=MxRoBom7LDeAhMHldhIzMxP1mFnaqFI6gw52RpU2zRLaeEMeEL0+wVnq MgTgAPkw2rEBU9iypvj4Zu3loBqJjxg9+/inJUxB62gFHULS73Ewm3aTw B6xPx3iFKIzjfk4ZiOcyXO0PM7QHvM/GyemELrPa+61U5E1W9oTqkKdaY NcpNVNXoFjhfq20p/1GjeT4SsuXqcr919UcWaxPrSNJtJvHM3byDVWDEi FFiPE2//A//CmDevLUm6INRgkzENn6HqHGz29iLE+u+rhbBPbGOQlcXHZ 4HRyFQ00cZZdVaP+Lt+hlQrGXamnHsSg+Zd6V03EL+8gmsA0dllowggQR w==; X-IronPort-AV: E=McAfee;i="6500,9779,10560"; a="382506967" X-IronPort-AV: E=Sophos;i="5.96,242,1665471600"; d="scan'208";a="382506967" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Dec 2022 10:27:49 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10560"; a="626445194" X-IronPort-AV: E=Sophos;i="5.96,242,1665471600"; d="scan'208";a="626445194" Received: from silpixa00401459.ir.intel.com (HELO silpixa00401459.ger.corp.intel.com) ([10.237.223.55]) by orsmga006.jf.intel.com with ESMTP; 13 Dec 2022 10:27:48 -0800 From: Bruce Richardson To: dev@dpdk.org Cc: Bruce Richardson , =?utf-8?q?Morten_Br=C3=B8?= =?utf-8?q?rup?= Subject: [RFC PATCH 2/7] telemetry: add uint type as alias for u64 Date: Tue, 13 Dec 2022 18:27:25 +0000 Message-Id: <20221213182730.97065-3-bruce.richardson@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221213182730.97065-1-bruce.richardson@intel.com> References: <20221213182730.97065-1-bruce.richardson@intel.com> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org For future standardization on the "uint" name for unsigned values rather than the existing "u64" one, we can for now: * rename all internal values to use uint rather than u64 * add new function names to alias the existing u64 ones Suggested-by: Morten Brørup Signed-off-by: Bruce Richardson --- lib/telemetry/rte_telemetry.h | 36 ++++++++++++++++++++++++++++++++++ lib/telemetry/telemetry.c | 16 +++++++-------- lib/telemetry/telemetry_data.c | 28 ++++++++++++++++++-------- lib/telemetry/telemetry_data.h | 4 ++-- lib/telemetry/version.map | 7 +++++++ 5 files changed, 73 insertions(+), 18 deletions(-) diff --git a/lib/telemetry/rte_telemetry.h b/lib/telemetry/rte_telemetry.h index c2ad65effe..60877dae0a 100644 --- a/lib/telemetry/rte_telemetry.h +++ b/lib/telemetry/rte_telemetry.h @@ -8,6 +8,8 @@ #ifndef _RTE_TELEMETRY_H_ #define _RTE_TELEMETRY_H_ +#include + #ifdef __cplusplus extern "C" { #endif @@ -121,6 +123,22 @@ int rte_tel_data_add_array_int(struct rte_tel_data *d, int x); /** + * Add an unsigned value to an array. + * The array must have been started by rte_tel_data_start_array() with + * RTE_TEL_UINT_VAL as the type parameter. + * + * @param d + * The data structure passed to the callback + * @param x + * The number to be returned in the array + * @return + * 0 on success, negative errno on error + */ +__rte_experimental +int +rte_tel_data_add_array_uint(struct rte_tel_data *d, uint64_t x); + + /** * Add a uint64_t to an array. * The array must have been started by rte_tel_data_start_array() with * RTE_TEL_UINT_VAL as the type parameter. @@ -193,6 +211,24 @@ int rte_tel_data_add_dict_int(struct rte_tel_data *d, const char *name, int val); /** + * Add an unsigned value to a dictionary. + * The dict must have been started by rte_tel_data_start_dict(). + * + * @param d + * The data structure passed to the callback + * @param name + * The name the value is to be stored under in the dict + * Must contain only alphanumeric characters or the symbols: '_' or '/' + * @param val + * The number to be stored in the dict + * @return + * 0 on success, negative errno on error, E2BIG on string truncation of name. + */ +int __rte_experimental +rte_tel_data_add_dict_uint(struct rte_tel_data *d, + const char *name, uint64_t val); + + /** * Add a uint64_t value to a dictionary. * The dict must have been started by rte_tel_data_start_dict(). * diff --git a/lib/telemetry/telemetry.c b/lib/telemetry/telemetry.c index 75957fe0b1..fd8186383f 100644 --- a/lib/telemetry/telemetry.c +++ b/lib/telemetry/telemetry.c @@ -167,16 +167,16 @@ container_to_json(const struct rte_tel_data *d, char *out_buf, size_t buf_len) size_t used = 0; unsigned int i; - if (d->type != RTE_TEL_DICT && d->type != RTE_TEL_ARRAY_U64 && + if (d->type != RTE_TEL_DICT && d->type != RTE_TEL_ARRAY_UINT && d->type != RTE_TEL_ARRAY_INT && d->type != RTE_TEL_ARRAY_STRING) return snprintf(out_buf, buf_len, "null"); used = rte_tel_json_empty_array(out_buf, buf_len, 0); - if (d->type == RTE_TEL_ARRAY_U64) + if (d->type == RTE_TEL_ARRAY_UINT) for (i = 0; i < d->data_len; i++) used = rte_tel_json_add_array_u64(out_buf, buf_len, used, - d->data.array[i].u64val); + d->data.array[i].uval); if (d->type == RTE_TEL_ARRAY_INT) for (i = 0; i < d->data_len; i++) used = rte_tel_json_add_array_int(out_buf, @@ -204,7 +204,7 @@ container_to_json(const struct rte_tel_data *d, char *out_buf, size_t buf_len) case RTE_TEL_UINT_VAL: used = rte_tel_json_add_obj_u64(out_buf, buf_len, used, - v->name, v->value.u64val); + v->name, v->value.uval); break; case RTE_TEL_CONTAINER: { @@ -271,7 +271,7 @@ output_json(const char *cmd, const struct rte_tel_data *d, int s) case RTE_TEL_UINT_VAL: used = rte_tel_json_add_obj_u64(cb_data_buf, buf_len, used, - v->name, v->value.u64val); + v->name, v->value.uval); break; case RTE_TEL_CONTAINER: { @@ -293,7 +293,7 @@ output_json(const char *cmd, const struct rte_tel_data *d, int s) case RTE_TEL_ARRAY_STRING: case RTE_TEL_ARRAY_INT: - case RTE_TEL_ARRAY_U64: + case RTE_TEL_ARRAY_UINT: case RTE_TEL_ARRAY_CONTAINER: used = rte_tel_json_empty_array(cb_data_buf, buf_len, 0); for (i = 0; i < d->data_len; i++) @@ -306,10 +306,10 @@ output_json(const char *cmd, const struct rte_tel_data *d, int s) used = rte_tel_json_add_array_int(cb_data_buf, buf_len, used, d->data.array[i].ival); - else if (d->type == RTE_TEL_ARRAY_U64) + else if (d->type == RTE_TEL_ARRAY_UINT) used = rte_tel_json_add_array_u64(cb_data_buf, buf_len, used, - d->data.array[i].u64val); + d->data.array[i].uval); else if (d->type == RTE_TEL_ARRAY_CONTAINER) { char temp[buf_len]; const struct container *rec_data = diff --git a/lib/telemetry/telemetry_data.c b/lib/telemetry/telemetry_data.c index 3c996484ec..077b0c4a6f 100644 --- a/lib/telemetry/telemetry_data.c +++ b/lib/telemetry/telemetry_data.c @@ -18,7 +18,7 @@ rte_tel_data_start_array(struct rte_tel_data *d, enum rte_tel_value_type type) enum tel_container_types array_types[] = { RTE_TEL_ARRAY_STRING, /* RTE_TEL_STRING_VAL = 0 */ RTE_TEL_ARRAY_INT, /* RTE_TEL_INT_VAL = 1 */ - RTE_TEL_ARRAY_U64, /* RTE_TEL_UINT_VAL = 2 */ + RTE_TEL_ARRAY_UINT, /* RTE_TEL_UINT_VAL = 2 */ RTE_TEL_ARRAY_CONTAINER, /* RTE_TEL_CONTAINER = 3 */ }; d->type = array_types[type]; @@ -70,22 +70,28 @@ rte_tel_data_add_array_int(struct rte_tel_data *d, int x) } int -rte_tel_data_add_array_u64(struct rte_tel_data *d, uint64_t x) +rte_tel_data_add_array_uint(struct rte_tel_data *d, uint64_t x) { - if (d->type != RTE_TEL_ARRAY_U64) + if (d->type != RTE_TEL_ARRAY_UINT) return -EINVAL; if (d->data_len >= RTE_TEL_MAX_ARRAY_ENTRIES) return -ENOSPC; - d->data.array[d->data_len++].u64val = x; + d->data.array[d->data_len++].uval = x; return 0; } +int +rte_tel_data_add_array_u64(struct rte_tel_data *d, uint64_t x) +{ + return rte_tel_data_add_array_uint(d, x); +} + int rte_tel_data_add_array_container(struct rte_tel_data *d, struct rte_tel_data *val, int keep) { if (d->type != RTE_TEL_ARRAY_CONTAINER || - (val->type != RTE_TEL_ARRAY_U64 + (val->type != RTE_TEL_ARRAY_UINT && val->type != RTE_TEL_ARRAY_INT && val->type != RTE_TEL_ARRAY_STRING)) return -EINVAL; @@ -160,7 +166,7 @@ rte_tel_data_add_dict_int(struct rte_tel_data *d, const char *name, int val) } int -rte_tel_data_add_dict_u64(struct rte_tel_data *d, +rte_tel_data_add_dict_uint(struct rte_tel_data *d, const char *name, uint64_t val) { struct tel_dict_entry *e = &d->data.dict[d->data_len]; @@ -174,18 +180,24 @@ rte_tel_data_add_dict_u64(struct rte_tel_data *d, d->data_len++; e->type = RTE_TEL_UINT_VAL; - e->value.u64val = val; + e->value.uval = val; const size_t bytes = strlcpy(e->name, name, RTE_TEL_MAX_STRING_LEN); return bytes < RTE_TEL_MAX_STRING_LEN ? 0 : E2BIG; } +int +rte_tel_data_add_dict_u64(struct rte_tel_data *d, const char *name, uint64_t val) +{ + return rte_tel_data_add_dict_uint(d, name, val); +} + int rte_tel_data_add_dict_container(struct rte_tel_data *d, const char *name, struct rte_tel_data *val, int keep) { struct tel_dict_entry *e = &d->data.dict[d->data_len]; - if (d->type != RTE_TEL_DICT || (val->type != RTE_TEL_ARRAY_U64 + if (d->type != RTE_TEL_DICT || (val->type != RTE_TEL_ARRAY_UINT && val->type != RTE_TEL_ARRAY_INT && val->type != RTE_TEL_ARRAY_STRING && val->type != RTE_TEL_DICT)) diff --git a/lib/telemetry/telemetry_data.h b/lib/telemetry/telemetry_data.h index 26aa28e72c..939deaa618 100644 --- a/lib/telemetry/telemetry_data.h +++ b/lib/telemetry/telemetry_data.h @@ -13,7 +13,7 @@ enum tel_container_types { RTE_TEL_DICT, /** name-value pairs, of individual value type */ RTE_TEL_ARRAY_STRING, /** array of string values only */ RTE_TEL_ARRAY_INT, /** array of signed, 32-bit int values */ - RTE_TEL_ARRAY_U64, /** array of unsigned 64-bit int values */ + RTE_TEL_ARRAY_UINT, /** array of unsigned 64-bit int values */ RTE_TEL_ARRAY_CONTAINER, /** array of container structs */ }; @@ -29,7 +29,7 @@ struct container { union tel_value { char sval[RTE_TEL_MAX_STRING_LEN]; int ival; - uint64_t u64val; + uint64_t uval; struct container container; }; diff --git a/lib/telemetry/version.map b/lib/telemetry/version.map index 9794f9ea20..0f70d82dfc 100644 --- a/lib/telemetry/version.map +++ b/lib/telemetry/version.map @@ -19,6 +19,13 @@ DPDK_23 { local: *; }; +EXPERIMENTAL { + global: + + rte_tel_data_add_array_uint; + rte_tel_data_add_dict_uint; +}; + INTERNAL { rte_telemetry_legacy_register; rte_telemetry_init; From patchwork Tue Dec 13 18:27:26 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bruce Richardson X-Patchwork-Id: 120846 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 0EE97A0540; Tue, 13 Dec 2022 19:28:10 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0216242D1F; Tue, 13 Dec 2022 19:27:57 +0100 (CET) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by mails.dpdk.org (Postfix) with ESMTP id 3F3DD42C29 for ; Tue, 13 Dec 2022 19:27:53 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1670956073; x=1702492073; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=3aUSgccpUEqr1kd/O3/T4U+4fImPSyAuW9KTcQcA574=; b=Egf1yzgdG32K/AHg3DU+0aBesgnpdlRiB697i1kbpF92lINRt4MFxL3p hNA7KPmNiZu/ZTvnr6fExdKoGwreCAAnHt8oGqLeP0CmauXWepm7B+hTJ ql4uDC7KgVLUM5IiXTI1wRtTm1gZDaZpcxN3pf/UQvgo4tsBfeEMvwjYw /sTU8CogrzLmakL8RyRjwlObVBFXkIS7WsCClTltxj/PJf2yeRwfnzDOk NOQatowU5qbAlbRavLgbRABoRn+KepCvcSMRxwCFEKsoYdhEcJo1RFwQA Ly6Uk+DmIQnOzNk27dqGncDZI7ssZ/4vGcQ9snaHiAjvhVcl1pIApqgV4 Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10560"; a="382506976" X-IronPort-AV: E=Sophos;i="5.96,242,1665471600"; d="scan'208";a="382506976" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Dec 2022 10:27:51 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10560"; a="626445201" X-IronPort-AV: E=Sophos;i="5.96,242,1665471600"; d="scan'208";a="626445201" Received: from silpixa00401459.ir.intel.com (HELO silpixa00401459.ger.corp.intel.com) ([10.237.223.55]) by orsmga006.jf.intel.com with ESMTP; 13 Dec 2022 10:27:50 -0800 From: Bruce Richardson To: dev@dpdk.org Cc: Bruce Richardson Subject: [RFC PATCH 3/7] telemetry: remove RTE prefix from internal enum values Date: Tue, 13 Dec 2022 18:27:26 +0000 Message-Id: <20221213182730.97065-4-bruce.richardson@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221213182730.97065-1-bruce.richardson@intel.com> References: <20221213182730.97065-1-bruce.richardson@intel.com> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org To better distinguish which values are public and which are internal remove the "RTE_" prefix off the internal enum defining the container types. Signed-off-by: Bruce Richardson --- lib/ethdev/sff_telemetry.c | 2 +- lib/telemetry/telemetry.c | 36 +++++++++++++++--------------- lib/telemetry/telemetry_data.c | 40 +++++++++++++++++----------------- lib/telemetry/telemetry_data.h | 14 ++++++------ 4 files changed, 46 insertions(+), 46 deletions(-) diff --git a/lib/ethdev/sff_telemetry.c b/lib/ethdev/sff_telemetry.c index ca6d196560..5923350424 100644 --- a/lib/ethdev/sff_telemetry.c +++ b/lib/ethdev/sff_telemetry.c @@ -96,7 +96,7 @@ ssf_add_dict_string(struct rte_tel_data *d, const char *name_str, const char *va { struct tel_dict_entry *e = &d->data.dict[d->data_len]; - if (d->type != RTE_TEL_DICT) + if (d->type != TEL_DICT) return; if (d->data_len >= RTE_TEL_MAX_DICT_ENTRIES) { RTE_ETHDEV_LOG(ERR, "data_len has exceeded the maximum number of inserts\n"); diff --git a/lib/telemetry/telemetry.c b/lib/telemetry/telemetry.c index fd8186383f..89bdde8422 100644 --- a/lib/telemetry/telemetry.c +++ b/lib/telemetry/telemetry.c @@ -167,27 +167,27 @@ container_to_json(const struct rte_tel_data *d, char *out_buf, size_t buf_len) size_t used = 0; unsigned int i; - if (d->type != RTE_TEL_DICT && d->type != RTE_TEL_ARRAY_UINT && - d->type != RTE_TEL_ARRAY_INT && d->type != RTE_TEL_ARRAY_STRING) + if (d->type != TEL_DICT && d->type != TEL_ARRAY_UINT && + d->type != TEL_ARRAY_INT && d->type != TEL_ARRAY_STRING) return snprintf(out_buf, buf_len, "null"); used = rte_tel_json_empty_array(out_buf, buf_len, 0); - if (d->type == RTE_TEL_ARRAY_UINT) + if (d->type == TEL_ARRAY_UINT) for (i = 0; i < d->data_len; i++) used = rte_tel_json_add_array_u64(out_buf, buf_len, used, d->data.array[i].uval); - if (d->type == RTE_TEL_ARRAY_INT) + if (d->type == TEL_ARRAY_INT) for (i = 0; i < d->data_len; i++) used = rte_tel_json_add_array_int(out_buf, buf_len, used, d->data.array[i].ival); - if (d->type == RTE_TEL_ARRAY_STRING) + if (d->type == TEL_ARRAY_STRING) for (i = 0; i < d->data_len; i++) used = rte_tel_json_add_array_string(out_buf, buf_len, used, d->data.array[i].sval); - if (d->type == RTE_TEL_DICT) + if (d->type == TEL_DICT) for (i = 0; i < d->data_len; i++) { const struct tel_dict_entry *v = &d->data.dict[i]; switch (v->type) { @@ -245,15 +245,15 @@ output_json(const char *cmd, const struct rte_tel_data *d, int s) buf_len = sizeof(out_buf) - prefix_used - 1; /* space for '}' */ switch (d->type) { - case RTE_TEL_NULL: + case TEL_NULL: used = strlcpy(cb_data_buf, "null", buf_len); break; - case RTE_TEL_STRING: + case TEL_STRING: used = rte_tel_json_str(cb_data_buf, buf_len, 0, d->data.str); break; - case RTE_TEL_DICT: + case TEL_DICT: used = rte_tel_json_empty_obj(cb_data_buf, buf_len, 0); for (i = 0; i < d->data_len; i++) { const struct tel_dict_entry *v = &d->data.dict[i]; @@ -291,26 +291,26 @@ output_json(const char *cmd, const struct rte_tel_data *d, int s) } break; - case RTE_TEL_ARRAY_STRING: - case RTE_TEL_ARRAY_INT: - case RTE_TEL_ARRAY_UINT: - case RTE_TEL_ARRAY_CONTAINER: + case TEL_ARRAY_STRING: + case TEL_ARRAY_INT: + case TEL_ARRAY_UINT: + case TEL_ARRAY_CONTAINER: used = rte_tel_json_empty_array(cb_data_buf, buf_len, 0); for (i = 0; i < d->data_len; i++) - if (d->type == RTE_TEL_ARRAY_STRING) + if (d->type == TEL_ARRAY_STRING) used = rte_tel_json_add_array_string( cb_data_buf, buf_len, used, d->data.array[i].sval); - else if (d->type == RTE_TEL_ARRAY_INT) + else if (d->type == TEL_ARRAY_INT) used = rte_tel_json_add_array_int(cb_data_buf, buf_len, used, d->data.array[i].ival); - else if (d->type == RTE_TEL_ARRAY_UINT) + else if (d->type == TEL_ARRAY_UINT) used = rte_tel_json_add_array_u64(cb_data_buf, buf_len, used, d->data.array[i].uval); - else if (d->type == RTE_TEL_ARRAY_CONTAINER) { + else if (d->type == TEL_ARRAY_CONTAINER) { char temp[buf_len]; const struct container *rec_data = &d->data.array[i].container; @@ -351,7 +351,7 @@ static int unknown_command(const char *cmd __rte_unused, const char *params __rte_unused, struct rte_tel_data *d) { - return d->type = RTE_TEL_NULL; + return d->type = TEL_NULL; } static void * diff --git a/lib/telemetry/telemetry_data.c b/lib/telemetry/telemetry_data.c index 077b0c4a6f..d51724e1f5 100644 --- a/lib/telemetry/telemetry_data.c +++ b/lib/telemetry/telemetry_data.c @@ -16,10 +16,10 @@ int rte_tel_data_start_array(struct rte_tel_data *d, enum rte_tel_value_type type) { enum tel_container_types array_types[] = { - RTE_TEL_ARRAY_STRING, /* RTE_TEL_STRING_VAL = 0 */ - RTE_TEL_ARRAY_INT, /* RTE_TEL_INT_VAL = 1 */ - RTE_TEL_ARRAY_UINT, /* RTE_TEL_UINT_VAL = 2 */ - RTE_TEL_ARRAY_CONTAINER, /* RTE_TEL_CONTAINER = 3 */ + TEL_ARRAY_STRING, /* RTE_TEL_STRING_VAL = 0 */ + TEL_ARRAY_INT, /* RTE_TEL_INT_VAL = 1 */ + TEL_ARRAY_UINT, /* RTE_TEL_UINT_VAL = 2 */ + TEL_ARRAY_CONTAINER, /* RTE_TEL_CONTAINER = 3 */ }; d->type = array_types[type]; d->data_len = 0; @@ -29,7 +29,7 @@ rte_tel_data_start_array(struct rte_tel_data *d, enum rte_tel_value_type type) int rte_tel_data_start_dict(struct rte_tel_data *d) { - d->type = RTE_TEL_DICT; + d->type = TEL_DICT; d->data_len = 0; return 0; } @@ -37,7 +37,7 @@ rte_tel_data_start_dict(struct rte_tel_data *d) int rte_tel_data_string(struct rte_tel_data *d, const char *str) { - d->type = RTE_TEL_STRING; + d->type = TEL_STRING; d->data_len = strlcpy(d->data.str, str, sizeof(d->data.str)); if (d->data_len >= RTE_TEL_MAX_SINGLE_STRING_LEN) { d->data_len = RTE_TEL_MAX_SINGLE_STRING_LEN - 1; @@ -49,7 +49,7 @@ rte_tel_data_string(struct rte_tel_data *d, const char *str) int rte_tel_data_add_array_string(struct rte_tel_data *d, const char *str) { - if (d->type != RTE_TEL_ARRAY_STRING) + if (d->type != TEL_ARRAY_STRING) return -EINVAL; if (d->data_len >= RTE_TEL_MAX_ARRAY_ENTRIES) return -ENOSPC; @@ -61,7 +61,7 @@ rte_tel_data_add_array_string(struct rte_tel_data *d, const char *str) int rte_tel_data_add_array_int(struct rte_tel_data *d, int x) { - if (d->type != RTE_TEL_ARRAY_INT) + if (d->type != TEL_ARRAY_INT) return -EINVAL; if (d->data_len >= RTE_TEL_MAX_ARRAY_ENTRIES) return -ENOSPC; @@ -72,7 +72,7 @@ rte_tel_data_add_array_int(struct rte_tel_data *d, int x) int rte_tel_data_add_array_uint(struct rte_tel_data *d, uint64_t x) { - if (d->type != RTE_TEL_ARRAY_UINT) + if (d->type != TEL_ARRAY_UINT) return -EINVAL; if (d->data_len >= RTE_TEL_MAX_ARRAY_ENTRIES) return -ENOSPC; @@ -90,10 +90,10 @@ int rte_tel_data_add_array_container(struct rte_tel_data *d, struct rte_tel_data *val, int keep) { - if (d->type != RTE_TEL_ARRAY_CONTAINER || - (val->type != RTE_TEL_ARRAY_UINT - && val->type != RTE_TEL_ARRAY_INT - && val->type != RTE_TEL_ARRAY_STRING)) + if (d->type != TEL_ARRAY_CONTAINER || + (val->type != TEL_ARRAY_UINT + && val->type != TEL_ARRAY_INT + && val->type != TEL_ARRAY_STRING)) return -EINVAL; if (d->data_len >= RTE_TEL_MAX_ARRAY_ENTRIES) return -ENOSPC; @@ -128,7 +128,7 @@ rte_tel_data_add_dict_string(struct rte_tel_data *d, const char *name, struct tel_dict_entry *e = &d->data.dict[d->data_len]; size_t nbytes, vbytes; - if (d->type != RTE_TEL_DICT) + if (d->type != TEL_DICT) return -EINVAL; if (d->data_len >= RTE_TEL_MAX_DICT_ENTRIES) return -ENOSPC; @@ -150,7 +150,7 @@ int rte_tel_data_add_dict_int(struct rte_tel_data *d, const char *name, int val) { struct tel_dict_entry *e = &d->data.dict[d->data_len]; - if (d->type != RTE_TEL_DICT) + if (d->type != TEL_DICT) return -EINVAL; if (d->data_len >= RTE_TEL_MAX_DICT_ENTRIES) return -ENOSPC; @@ -170,7 +170,7 @@ rte_tel_data_add_dict_uint(struct rte_tel_data *d, const char *name, uint64_t val) { struct tel_dict_entry *e = &d->data.dict[d->data_len]; - if (d->type != RTE_TEL_DICT) + if (d->type != TEL_DICT) return -EINVAL; if (d->data_len >= RTE_TEL_MAX_DICT_ENTRIES) return -ENOSPC; @@ -197,10 +197,10 @@ rte_tel_data_add_dict_container(struct rte_tel_data *d, const char *name, { struct tel_dict_entry *e = &d->data.dict[d->data_len]; - if (d->type != RTE_TEL_DICT || (val->type != RTE_TEL_ARRAY_UINT - && val->type != RTE_TEL_ARRAY_INT - && val->type != RTE_TEL_ARRAY_STRING - && val->type != RTE_TEL_DICT)) + if (d->type != TEL_DICT || (val->type != TEL_ARRAY_UINT + && val->type != TEL_ARRAY_INT + && val->type != TEL_ARRAY_STRING + && val->type != TEL_DICT)) return -EINVAL; if (d->data_len >= RTE_TEL_MAX_DICT_ENTRIES) return -ENOSPC; diff --git a/lib/telemetry/telemetry_data.h b/lib/telemetry/telemetry_data.h index 939deaa618..8db6875a81 100644 --- a/lib/telemetry/telemetry_data.h +++ b/lib/telemetry/telemetry_data.h @@ -8,13 +8,13 @@ #include "rte_telemetry.h" enum tel_container_types { - RTE_TEL_NULL, /** null, used as error value */ - RTE_TEL_STRING, /** basic string type, no included data */ - RTE_TEL_DICT, /** name-value pairs, of individual value type */ - RTE_TEL_ARRAY_STRING, /** array of string values only */ - RTE_TEL_ARRAY_INT, /** array of signed, 32-bit int values */ - RTE_TEL_ARRAY_UINT, /** array of unsigned 64-bit int values */ - RTE_TEL_ARRAY_CONTAINER, /** array of container structs */ + TEL_NULL, /** null, used as error value */ + TEL_STRING, /** basic string type, no included data */ + TEL_DICT, /** name-value pairs, of individual value type */ + TEL_ARRAY_STRING, /** array of string values only */ + TEL_ARRAY_INT, /** array of signed, 32-bit int values */ + TEL_ARRAY_UINT, /** array of unsigned 64-bit int values */ + TEL_ARRAY_CONTAINER, /** array of container structs */ }; struct container { From patchwork Tue Dec 13 18:27:27 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bruce Richardson X-Patchwork-Id: 120847 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id B5441A0540; Tue, 13 Dec 2022 19:28:15 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id EDA8042D24; Tue, 13 Dec 2022 19:27:57 +0100 (CET) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by mails.dpdk.org (Postfix) with ESMTP id D154740395 for ; Tue, 13 Dec 2022 19:27:53 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1670956074; x=1702492074; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=c/YwvSpj6ssxiZioC7ibUnQlx1mCa4ylmjtfqs6Xf64=; b=MoysRIySPQW4Wk2VH0TFi2bTJ0S2TEfe9wPPQMkKzLazzhWyC9JXaCv5 bXf1nT6Qh1wZDnONGYT9tARMz7eL8iKTBxE8Y/EzWnFfH9BGTReqaduYR 3AVJBZDwjmiXPTSsD5qqvztRIKHvDpxSuodY3OsUtTsrN3ptvGWfwgM0f qxwzKz6o/WVq+m/jzDPORMXzLKKCS+lV/ZH6maTcLVsl6miCYHem+91mc IKfjBxhsAcrWtLHavuNdbqGYGGB1w8SaaOaUWOuDKxz0EeeMyrOifgGBY PAaGOEGifX5WysVgqgj4vD2w60N22spgbO8o0TwzjP4s9nhLpN9DhfRJ0 Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10560"; a="382506984" X-IronPort-AV: E=Sophos;i="5.96,242,1665471600"; d="scan'208";a="382506984" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Dec 2022 10:27:53 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10560"; a="626445216" X-IronPort-AV: E=Sophos;i="5.96,242,1665471600"; d="scan'208";a="626445216" Received: from silpixa00401459.ir.intel.com (HELO silpixa00401459.ger.corp.intel.com) ([10.237.223.55]) by orsmga006.jf.intel.com with ESMTP; 13 Dec 2022 10:27:52 -0800 From: Bruce Richardson To: dev@dpdk.org Cc: Bruce Richardson Subject: [RFC PATCH 4/7] telemetry: make array initialization more robust Date: Tue, 13 Dec 2022 18:27:27 +0000 Message-Id: <20221213182730.97065-5-bruce.richardson@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221213182730.97065-1-bruce.richardson@intel.com> References: <20221213182730.97065-1-bruce.richardson@intel.com> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Rather than relying on a specific ordering of elements in the array matching that of elements in the enum definition, we can explicitly mark each array entry using the equivalent enum value as an index. Signed-off-by: Bruce Richardson --- lib/telemetry/telemetry_data.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/telemetry/telemetry_data.c b/lib/telemetry/telemetry_data.c index d51724e1f5..9a180937fd 100644 --- a/lib/telemetry/telemetry_data.c +++ b/lib/telemetry/telemetry_data.c @@ -16,10 +16,10 @@ int rte_tel_data_start_array(struct rte_tel_data *d, enum rte_tel_value_type type) { enum tel_container_types array_types[] = { - TEL_ARRAY_STRING, /* RTE_TEL_STRING_VAL = 0 */ - TEL_ARRAY_INT, /* RTE_TEL_INT_VAL = 1 */ - TEL_ARRAY_UINT, /* RTE_TEL_UINT_VAL = 2 */ - TEL_ARRAY_CONTAINER, /* RTE_TEL_CONTAINER = 3 */ + [RTE_TEL_STRING_VAL] = TEL_ARRAY_STRING, + [RTE_TEL_INT_VAL] = TEL_ARRAY_INT, + [RTE_TEL_UINT_VAL] = TEL_ARRAY_UINT, + [RTE_TEL_CONTAINER] = TEL_ARRAY_CONTAINER, }; d->type = array_types[type]; d->data_len = 0; From patchwork Tue Dec 13 18:27:28 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bruce Richardson X-Patchwork-Id: 120848 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 16157A0540; Tue, 13 Dec 2022 19:28:23 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 28A9F42D0D; Tue, 13 Dec 2022 19:27:59 +0100 (CET) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by mails.dpdk.org (Postfix) with ESMTP id 72F0D42D1A for ; Tue, 13 Dec 2022 19:27:56 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1670956076; x=1702492076; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=e2RCpjZsgGM9gwmK1pqdksHY+tqQ59ObxdOiMS/LAEc=; b=Az4b+WDzEERwMdtgqgvp7RtEfhT0musyhtAYR9ILFxOJyZg4E/NC7+Ox T5LRNkQ64aBAEim4qDC0HCuUIWFLRE/Dwq/MdGOEQex1Qj10MlPOPJYoD +l6YZ9ZahZIfPck9fmiM76LUBB5DQ+IRX8zEWQ1Pefvp8jsRjF5UjqFE3 x8VTkJaTLQXH0akh1Wj8IEet0jng9BVj2HwkN9lRGYZDIXewPBULBr9mI Ucujb9zqjw3UWwqPBuxFgnZlVFW2NG6ual8dfzZ2U8lBEnm0gz0px4nBo 9PjskbYCQiYmGFT53U+2qfLFWZCiFO4bu3HuVrQD2RP//9BGgjA+1Knb4 A==; X-IronPort-AV: E=McAfee;i="6500,9779,10560"; a="382506993" X-IronPort-AV: E=Sophos;i="5.96,242,1665471600"; d="scan'208";a="382506993" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Dec 2022 10:27:55 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10560"; a="626445226" X-IronPort-AV: E=Sophos;i="5.96,242,1665471600"; d="scan'208";a="626445226" Received: from silpixa00401459.ir.intel.com (HELO silpixa00401459.ger.corp.intel.com) ([10.237.223.55]) by orsmga006.jf.intel.com with ESMTP; 13 Dec 2022 10:27:54 -0800 From: Bruce Richardson To: dev@dpdk.org Cc: Bruce Richardson , =?utf-8?q?Morten_Br=C3=B8?= =?utf-8?q?rup?= Subject: [RFC PATCH 5/7] telemetry: update json functions to use int/uint in names Date: Tue, 13 Dec 2022 18:27:28 +0000 Message-Id: <20221213182730.97065-6-bruce.richardson@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221213182730.97065-1-bruce.richardson@intel.com> References: <20221213182730.97065-1-bruce.richardson@intel.com> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Since we are standardizing on using uint in place of u64, and expanding the int values to 64-bit, we can update the internal json functions to use the new names and expanded signed type. Suggested-by: Morten Brørup Signed-off-by: Bruce Richardson --- app/test/test_telemetry_json.c | 9 ++++----- lib/telemetry/telemetry.c | 8 ++++---- lib/telemetry/telemetry_json.h | 16 ++++++++-------- 3 files changed, 16 insertions(+), 17 deletions(-) diff --git a/app/test/test_telemetry_json.c b/app/test/test_telemetry_json.c index 184c3ba9f1..e81e3a8a98 100644 --- a/app/test/test_telemetry_json.c +++ b/app/test/test_telemetry_json.c @@ -37,9 +37,9 @@ test_basic_obj(void) char buf[1024]; int used = 0; - used = rte_tel_json_add_obj_u64(buf, sizeof(buf), used, + used = rte_tel_json_add_obj_uint(buf, sizeof(buf), used, "weddings", 4); - used = rte_tel_json_add_obj_u64(buf, sizeof(buf), used, + used = rte_tel_json_add_obj_uint(buf, sizeof(buf), used, "funerals", 1); printf("%s: buf = '%s', expected = '%s'\n", __func__, buf, expected); @@ -80,8 +80,7 @@ test_overflow_obj(void) int i, used = 0; for (i = 0; i < (int)RTE_DIM(names); i++) - used = rte_tel_json_add_obj_u64(buf, sizeof(buf), used, - names[i], vals[i]); + used = rte_tel_json_add_obj_uint(buf, sizeof(buf), used, names[i], vals[i]); printf("%s: buf = '%s', expected = '%s'\n", __func__, buf, expected); if (buf[used - 1] != '}') @@ -117,7 +116,7 @@ test_large_obj_element(void) char buf[sizeof(str) - 5] = "XYZ"; int used = 0; - used = rte_tel_json_add_obj_u64(buf, sizeof(buf), used, str, 0); + used = rte_tel_json_add_obj_uint(buf, sizeof(buf), used, str, 0); printf("%s: buf = '%s', expected = '%s'\n", __func__, buf, expected); if (used != 0) return -1; diff --git a/lib/telemetry/telemetry.c b/lib/telemetry/telemetry.c index 89bdde8422..655191bcf1 100644 --- a/lib/telemetry/telemetry.c +++ b/lib/telemetry/telemetry.c @@ -174,7 +174,7 @@ container_to_json(const struct rte_tel_data *d, char *out_buf, size_t buf_len) used = rte_tel_json_empty_array(out_buf, buf_len, 0); if (d->type == TEL_ARRAY_UINT) for (i = 0; i < d->data_len; i++) - used = rte_tel_json_add_array_u64(out_buf, + used = rte_tel_json_add_array_uint(out_buf, buf_len, used, d->data.array[i].uval); if (d->type == TEL_ARRAY_INT) @@ -202,7 +202,7 @@ container_to_json(const struct rte_tel_data *d, char *out_buf, size_t buf_len) v->name, v->value.ival); break; case RTE_TEL_UINT_VAL: - used = rte_tel_json_add_obj_u64(out_buf, + used = rte_tel_json_add_obj_uint(out_buf, buf_len, used, v->name, v->value.uval); break; @@ -269,7 +269,7 @@ output_json(const char *cmd, const struct rte_tel_data *d, int s) v->name, v->value.ival); break; case RTE_TEL_UINT_VAL: - used = rte_tel_json_add_obj_u64(cb_data_buf, + used = rte_tel_json_add_obj_uint(cb_data_buf, buf_len, used, v->name, v->value.uval); break; @@ -307,7 +307,7 @@ output_json(const char *cmd, const struct rte_tel_data *d, int s) buf_len, used, d->data.array[i].ival); else if (d->type == TEL_ARRAY_UINT) - used = rte_tel_json_add_array_u64(cb_data_buf, + used = rte_tel_json_add_array_uint(cb_data_buf, buf_len, used, d->data.array[i].uval); else if (d->type == TEL_ARRAY_CONTAINER) { diff --git a/lib/telemetry/telemetry_json.h b/lib/telemetry/telemetry_json.h index e3fae7c30d..744bbfe053 100644 --- a/lib/telemetry/telemetry_json.h +++ b/lib/telemetry/telemetry_json.h @@ -136,19 +136,19 @@ rte_tel_json_add_array_string(char *buf, const int len, const int used, /* Appends an integer into the JSON array in the provided buffer. */ static inline int -rte_tel_json_add_array_int(char *buf, const int len, const int used, int val) +rte_tel_json_add_array_int(char *buf, const int len, const int used, int64_t val) { int ret, end = used - 1; /* strip off final delimiter */ if (used <= 2) /* assume empty, since minimum is '[]' */ - return __json_snprintf(buf, len, "[%d]", val); + return __json_snprintf(buf, len, "[%"PRId64"]", val); - ret = __json_snprintf(buf + end, len - end, ",%d]", val); + ret = __json_snprintf(buf + end, len - end, ",%"PRId64"]", val); return ret == 0 ? used : end + ret; } /* Appends a uint64_t into the JSON array in the provided buffer. */ static inline int -rte_tel_json_add_array_u64(char *buf, const int len, const int used, +rte_tel_json_add_array_uint(char *buf, const int len, const int used, uint64_t val) { int ret, end = used - 1; /* strip off final delimiter */ @@ -180,7 +180,7 @@ rte_tel_json_add_array_json(char *buf, const int len, const int used, * provided buffer. */ static inline int -rte_tel_json_add_obj_u64(char *buf, const int len, const int used, +rte_tel_json_add_obj_uint(char *buf, const int len, const int used, const char *name, uint64_t val) { int ret, end = used - 1; @@ -199,14 +199,14 @@ rte_tel_json_add_obj_u64(char *buf, const int len, const int used, */ static inline int rte_tel_json_add_obj_int(char *buf, const int len, const int used, - const char *name, int val) + const char *name, int64_t val) { int ret, end = used - 1; if (used <= 2) /* assume empty, since minimum is '{}' */ - return __json_snprintf(buf, len, "{\"%s\":%d}", name, + return __json_snprintf(buf, len, "{\"%s\":%"PRId64"}", name, val); - ret = __json_snprintf(buf + end, len - end, ",\"%s\":%d}", + ret = __json_snprintf(buf + end, len - end, ",\"%s\":%"PRId64"}", name, val); return ret == 0 ? used : end + ret; } From patchwork Tue Dec 13 18:27:29 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bruce Richardson X-Patchwork-Id: 120849 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id F2287A0540; Tue, 13 Dec 2022 19:28:28 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1CDA342D3A; Tue, 13 Dec 2022 19:28:00 +0100 (CET) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by mails.dpdk.org (Postfix) with ESMTP id 0D35142D27 for ; Tue, 13 Dec 2022 19:27:57 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1670956078; x=1702492078; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=dkFTJQnbSQRFlMM3n71s4XkLya50APl2dRo+b7Ieqnc=; b=OWW2LdXgPOPXql9WVxeiFvSmWzM+0eHlRYdKH6luPuOYUZXaJ1OQ1vJ9 wQD6YdO9kiBvHrYUmzwhw/d27z8U3ybwbArc5e30fSup0jgDoL7dHleej GgUhRqzOkXmb0+Echa3d8R9gv1LKAE6C4UhNQAk51DGtA3/Znw9NCwsKV OYj6/lXfwy8BtJbKgtzcA+mo2LBUcZheSM4RoviKMjkLzN/tqegJNAlTu 30tLoJtw3M3B7XXW7W+gQzjtvfjGn9W2GPX8MvntFvu0MVtLnLKRzi0Qa oY0eatRJKUuTFsT2nCUav00CcdzuDvBXhgPDZH/n4fvp+roTlRlHP4cS1 A==; X-IronPort-AV: E=McAfee;i="6500,9779,10560"; a="382507001" X-IronPort-AV: E=Sophos;i="5.96,242,1665471600"; d="scan'208";a="382507001" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Dec 2022 10:27:57 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10560"; a="626445241" X-IronPort-AV: E=Sophos;i="5.96,242,1665471600"; d="scan'208";a="626445241" Received: from silpixa00401459.ir.intel.com (HELO silpixa00401459.ger.corp.intel.com) ([10.237.223.55]) by orsmga006.jf.intel.com with ESMTP; 13 Dec 2022 10:27:56 -0800 From: Bruce Richardson To: dev@dpdk.org Cc: Bruce Richardson , =?utf-8?q?Morten_Br=C3=B8?= =?utf-8?q?rup?= Subject: [RFC PATCH 6/7] telemetry: make internal int representation 64-bits Date: Tue, 13 Dec 2022 18:27:29 +0000 Message-Id: <20221213182730.97065-7-bruce.richardson@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221213182730.97065-1-bruce.richardson@intel.com> References: <20221213182730.97065-1-bruce.richardson@intel.com> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org The internal storage for int values can be expanded from 32-bit to 64-bit without affecting the external ABI. Suggested-by: Morten Brørup Signed-off-by: Bruce Richardson --- lib/telemetry/telemetry_data.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/telemetry/telemetry_data.h b/lib/telemetry/telemetry_data.h index 8db6875a81..205509c5a2 100644 --- a/lib/telemetry/telemetry_data.h +++ b/lib/telemetry/telemetry_data.h @@ -28,7 +28,7 @@ struct container { */ union tel_value { char sval[RTE_TEL_MAX_STRING_LEN]; - int ival; + int64_t ival; uint64_t uval; struct container container; }; From patchwork Tue Dec 13 18:27:30 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Bruce Richardson X-Patchwork-Id: 120850 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 46E99A0540; Tue, 13 Dec 2022 19:28:35 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1686042D29; Tue, 13 Dec 2022 19:28:02 +0100 (CET) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by mails.dpdk.org (Postfix) with ESMTP id 4D64542D3C for ; Tue, 13 Dec 2022 19:28:00 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1670956080; x=1702492080; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=HM41Ic8UX06vMxOcTjEt5bVtk3b+hj2H3dnTyZgMSPE=; b=lNnNsBVnh1oil8mKI/AEHtt7OyBJ+6gibYwnMIyBfbtsg2Ej1yKXw2g3 LBGEHbboXepCHnFCUdF96xSk8fo8atAOY+swBIU/Wog+wc7GGj1xJSVee stKUAjE61JnYtUkIEF8ERfFiDisb23dxmCzY87dzAZkgjtVaY1Fs45yWE hfkthp+FL3DMqMVabihJNzLBx/ceu2pIlCjw1jum6jH1JsEvhVFS2WkLP e62n4BRFM3SqkW4wq508ar4scb+tfCTGU2klgGocLKNkcLinRqJ0ARZA8 5O/QQxHGf1y2cYhrf8/dHSLffhF/9l1NGBd3mGx4JbTV6w3ykk+SIlgJC Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10560"; a="382507009" X-IronPort-AV: E=Sophos;i="5.96,242,1665471600"; d="scan'208";a="382507009" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Dec 2022 10:28:00 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10560"; a="626445254" X-IronPort-AV: E=Sophos;i="5.96,242,1665471600"; d="scan'208";a="626445254" Received: from silpixa00401459.ir.intel.com (HELO silpixa00401459.ger.corp.intel.com) ([10.237.223.55]) by orsmga006.jf.intel.com with ESMTP; 13 Dec 2022 10:27:58 -0800 From: Bruce Richardson To: dev@dpdk.org Cc: Bruce Richardson , =?utf-8?q?Morten_Br=C3=B8?= =?utf-8?q?rup?= Subject: [RFC PATCH 7/7] telemetry: change public API to use 64-bit signed values Date: Tue, 13 Dec 2022 18:27:30 +0000 Message-Id: <20221213182730.97065-8-bruce.richardson@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221213182730.97065-1-bruce.richardson@intel.com> References: <20221213182730.97065-1-bruce.richardson@intel.com> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org While the unsigned values added to telemetry dicts/arrays were up to 64-bits in size, the sized values were only up to 32-bits. We can standardize the API by having both int and uint functions take 64-bit values. For ABI compatibility, we use function versioning to ensure older binaries can still use the older functions taking a 32-bit parameter. Suggested-by: Morten Brørup Signed-off-by: Bruce Richardson --- lib/telemetry/meson.build | 1 + lib/telemetry/rte_telemetry.h | 4 ++-- lib/telemetry/telemetry_data.c | 33 +++++++++++++++++++++++++++++---- lib/telemetry/telemetry_data.h | 6 ++++++ lib/telemetry/version.map | 7 +++++++ 5 files changed, 45 insertions(+), 6 deletions(-) diff --git a/lib/telemetry/meson.build b/lib/telemetry/meson.build index f84c9aa3be..73750d9ef4 100644 --- a/lib/telemetry/meson.build +++ b/lib/telemetry/meson.build @@ -6,3 +6,4 @@ includes = [global_inc] sources = files('telemetry.c', 'telemetry_data.c', 'telemetry_legacy.c') headers = files('rte_telemetry.h') includes += include_directories('../metrics') +use_function_versioning = true diff --git a/lib/telemetry/rte_telemetry.h b/lib/telemetry/rte_telemetry.h index 60877dae0a..baa7b21f6b 100644 --- a/lib/telemetry/rte_telemetry.h +++ b/lib/telemetry/rte_telemetry.h @@ -120,7 +120,7 @@ rte_tel_data_add_array_string(struct rte_tel_data *d, const char *str); * 0 on success, negative errno on error */ int -rte_tel_data_add_array_int(struct rte_tel_data *d, int x); +rte_tel_data_add_array_int(struct rte_tel_data *d, int64_t x); /** * Add an unsigned value to an array. @@ -208,7 +208,7 @@ rte_tel_data_add_dict_string(struct rte_tel_data *d, const char *name, * 0 on success, negative errno on error, E2BIG on string truncation of name. */ int -rte_tel_data_add_dict_int(struct rte_tel_data *d, const char *name, int val); +rte_tel_data_add_dict_int(struct rte_tel_data *d, const char *name, int64_t val); /** * Add an unsigned value to a dictionary. diff --git a/lib/telemetry/telemetry_data.c b/lib/telemetry/telemetry_data.c index 9a180937fd..ac7be795df 100644 --- a/lib/telemetry/telemetry_data.c +++ b/lib/telemetry/telemetry_data.c @@ -8,6 +8,7 @@ #undef RTE_USE_LIBBSD #include +#include #include #include "telemetry_data.h" @@ -58,8 +59,8 @@ rte_tel_data_add_array_string(struct rte_tel_data *d, const char *str) return bytes < RTE_TEL_MAX_STRING_LEN ? 0 : E2BIG; } -int -rte_tel_data_add_array_int(struct rte_tel_data *d, int x) +int __vsym +rte_tel_data_add_array_int_v24(struct rte_tel_data *d, int64_t x) { if (d->type != TEL_ARRAY_INT) return -EINVAL; @@ -69,6 +70,18 @@ rte_tel_data_add_array_int(struct rte_tel_data *d, int x) return 0; } +int __vsym +rte_tel_data_add_array_int_v23(struct rte_tel_data *d, int x) +{ + return rte_tel_data_add_array_int_v24(d, x); +} + +/* mark the v23 function as the older version, and v24 as the default version */ +VERSION_SYMBOL(rte_tel_data_add_array_int, _v23, 23); +BIND_DEFAULT_SYMBOL(rte_tel_data_add_array_int, _v24, 24); +MAP_STATIC_SYMBOL(int rte_tel_data_add_array_int(struct rte_tel_data *d, + int64_t x), rte_tel_data_add_array_int_v24); + int rte_tel_data_add_array_uint(struct rte_tel_data *d, uint64_t x) { @@ -146,8 +159,8 @@ rte_tel_data_add_dict_string(struct rte_tel_data *d, const char *name, return 0; } -int -rte_tel_data_add_dict_int(struct rte_tel_data *d, const char *name, int val) +int __vsym +rte_tel_data_add_dict_int_v24(struct rte_tel_data *d, const char *name, int64_t val) { struct tel_dict_entry *e = &d->data.dict[d->data_len]; if (d->type != TEL_DICT) @@ -165,6 +178,18 @@ rte_tel_data_add_dict_int(struct rte_tel_data *d, const char *name, int val) return bytes < RTE_TEL_MAX_STRING_LEN ? 0 : E2BIG; } +int __vsym +rte_tel_data_add_dict_int_v23(struct rte_tel_data *d, const char *name, int val) +{ + return rte_tel_data_add_dict_int_v24(d, name, val); +} + +/* mark the v23 function as the older version, and v24 as the default version */ +VERSION_SYMBOL(rte_tel_data_add_dict_int, _v23, 23); +BIND_DEFAULT_SYMBOL(rte_tel_data_add_dict_int, _v24, 24); +MAP_STATIC_SYMBOL(int rte_tel_data_add_dict_int(struct rte_tel_data *d, + const char *name, int64_t val), rte_tel_data_add_dict_int_v24); + int rte_tel_data_add_dict_uint(struct rte_tel_data *d, const char *name, uint64_t val) diff --git a/lib/telemetry/telemetry_data.h b/lib/telemetry/telemetry_data.h index 205509c5a2..53e4cabea5 100644 --- a/lib/telemetry/telemetry_data.h +++ b/lib/telemetry/telemetry_data.h @@ -49,4 +49,10 @@ struct rte_tel_data { } data; /* data container */ }; +/* versioned functions */ +int rte_tel_data_add_array_int_v23(struct rte_tel_data *d, int val); +int rte_tel_data_add_array_int_v24(struct rte_tel_data *d, int64_t val); +int rte_tel_data_add_dict_int_v23(struct rte_tel_data *d, const char *name, int val); +int rte_tel_data_add_dict_int_v24(struct rte_tel_data *d, const char *name, int64_t val); + #endif diff --git a/lib/telemetry/version.map b/lib/telemetry/version.map index 0f70d82dfc..85df19c4d8 100644 --- a/lib/telemetry/version.map +++ b/lib/telemetry/version.map @@ -19,6 +19,13 @@ DPDK_23 { local: *; }; +DPDK_24 { + global: + + rte_tel_data_add_array_int; + rte_tel_data_add_dict_int; +} DPDK_23; + EXPERIMENTAL { global: