From: "lihuisong (C)" <lihuisong@huawei.com>
To: Bruce Richardson <bruce.richardson@intel.com>
Cc: <dev@dpdk.org>, <mb@smartsharesystems.com>,
<andrew.rybchenko@oktetlabs.ru>, <huangdaode@huawei.com>,
<liudongdong3@huawei.com>, <fengchengwen@huawei.com>
Subject: Re: [PATCH V5 6/8] telemetry: support adding integer value as hexadecimal
Date: Thu, 15 Dec 2022 09:32:12 +0800 [thread overview]
Message-ID: <2a6492f6-5d3d-d107-e801-25dd90b15d3c@huawei.com> (raw)
In-Reply-To: <Y5nuBQ3pwB1jz2Fv@bricha3-MOBL.ger.corp.intel.com>
在 2022/12/14 23:38, Bruce Richardson 写道:
> On Wed, Dec 14, 2022 at 08:32:51PM +0800, Huisong Li wrote:
>> Sometimes displaying a unsigned integer value as hexadecimal encoded style
>> is more expected for human consumption, such as, offload capability and
>> device flag. This patch introduces two APIs to add unsigned integer value
>> as hexadecimal encoded string to array or dictionary. And user can choose
>> whether the stored value is padding to the specified width.
>>
>> Signed-off-by: Huisong Li <lihuisong@huawei.com>
>> Acked-by: Morten Brørup <mb@smartsharesystems.com>
>> Acked-by: Chengwen Feng <fengchengwen@huawei.com>
>> ---
>> lib/telemetry/rte_telemetry.h | 47 +++++++++++++++++++++
>> lib/telemetry/telemetry_data.c | 74 ++++++++++++++++++++++++++++++++++
>> lib/telemetry/version.map | 9 +++++
>> 3 files changed, 130 insertions(+)
>>
>> diff --git a/lib/telemetry/rte_telemetry.h b/lib/telemetry/rte_telemetry.h
>> index 40e9a3bf9d..b24f0310ea 100644
>> --- a/lib/telemetry/rte_telemetry.h
>> +++ b/lib/telemetry/rte_telemetry.h
>> @@ -10,6 +10,7 @@ extern "C" {
>> #endif
>>
>> #include <stdint.h>
>> +#include <rte_compat.h>
>>
>> /** Maximum length for string used in object. */
>> #define RTE_TEL_MAX_STRING_LEN 128
>> @@ -153,6 +154,28 @@ int
>> rte_tel_data_add_array_container(struct rte_tel_data *d,
>> struct rte_tel_data *val, int keep);
>>
>> +/**
>> + * Convert a unsigned integer to hexadecimal encoded strings and add this string
>> + * to an array.
>> + * The array must have been started by rte_tel_data_start_array() with
>> + * RTE_TEL_STRING_VAL as the type parameter.
>> + *
>> + * @param d
>> + * The data structure passed to the callback
>> + * @param val
>> + * The number to be returned in the array as a hexadecimal encoded strings.
>> + * @param display_bitwidth
>> + * The display bit width of the 'val'. If 'display_bitwidth' is zero, the
>> + * value is stored in the array as no-padding zero hexadecimal encoded string,
>> + * or the value is stored as padding zero to specified hexadecimal width.
>> + * @return
>> + * 0 on success, negative errno on error
>> + */
>> +__rte_experimental
>> +int
>> +rte_tel_data_add_array_uint_hex(struct rte_tel_data *d, uint64_t val,
>> + uint8_t display_bitwidth);
>> +
>> /**
>> * Add a string value to a dictionary.
>> * The dict must have been started by rte_tel_data_start_dict().
>> @@ -231,6 +254,30 @@ int
>> rte_tel_data_add_dict_container(struct rte_tel_data *d, const char *name,
>> struct rte_tel_data *val, int keep);
>>
>> +/**
>> + * Convert a unsigned integer to hexadecimal encoded strings and add this string
>> + * to an 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 of the value is to be stored in the dict
>> + * Must contain only alphanumeric characters or the symbols: '_' or '/'
>> + * @param val
>> + * The number to be stored in the dict as a hexadecimal encoded strings.
>> + * @param display_bitwidth
>> + * The display bit width of the 'val'. If 'display_bitwidth' is zero, the
>> + * value is stored in the array as no-padding zero hexadecimal encoded string,
>> + * or the value is stored as padding zero to specified hexadecimal width.
>> + * @return
>> + * 0 on success, negative errno on error
>> + */
>> +__rte_experimental
>> +int
>> +rte_tel_data_add_dict_uint_hex(struct rte_tel_data *d, const char *name,
>> + uint64_t val, uint8_t display_bitwidth);
>> +
>> /**
>> * This telemetry callback is used when registering a telemetry command.
>> * It handles getting and formatting information to be returned to telemetry
>> diff --git a/lib/telemetry/telemetry_data.c b/lib/telemetry/telemetry_data.c
>> index 34366ecee3..14cb56d680 100644
>> --- a/lib/telemetry/telemetry_data.c
>> +++ b/lib/telemetry/telemetry_data.c
>> @@ -4,6 +4,7 @@
>>
>> #include <errno.h>
>> #include <stdlib.h>
>> +#include <inttypes.h>
>>
>> #undef RTE_USE_LIBBSD
>> #include <stdbool.h>
>> @@ -12,6 +13,8 @@
>>
>> #include "telemetry_data.h"
>>
>> +#define RTE_TEL_UINT_HEX_STR_BUF_LEN 64
>> +
>> int
>> rte_tel_data_start_array(struct rte_tel_data *d, enum rte_tel_value_type type)
>> {
>> @@ -97,6 +100,60 @@ rte_tel_data_add_array_container(struct rte_tel_data *d,
>> return 0;
>> }
>>
>> +/* To suppress compiler warning about format string. */
>> +#if defined(RTE_TOOLCHAIN_GCC)
>> +#pragma GCC diagnostic push
>> +#pragma GCC diagnostic ignored "-Wformat-nonliteral"
>> +#elif defined(RTE_TOOLCHAIN_CLANG)
>> +#pragma clang diagnostic push
>> +#pragma clang diagnostic ignored "-Wformat-nonliteral"
>> +#endif
>> +
>> +static int
>> +rte_tel_uint_to_hex_encoded_str(char *buf, uint16_t len, uint64_t val,
>> + uint8_t display_bitwidth)
>> +{
>> +#define RTE_TEL_UINT_HEX_FORMAT_LEN 16
>> +
>> + uint8_t spec_hex_width = (display_bitwidth + 3) / 4;
>> + char format[RTE_TEL_UINT_HEX_FORMAT_LEN];
>> +
>> + /* Buffer needs to have room to contain the prefix '0x' and '\0'. */
>> + if (len < spec_hex_width + 3)
>> + return -EINVAL;
>> +
>> + if (display_bitwidth != 0) {
>> + sprintf(format, "0x%%0%u" PRIx64, spec_hex_width);
>> + sprintf(buf, format, val);
>> + } else {
>> + sprintf(buf, "0x%" PRIx64, val);
>> + }
>> +
>> + return 0;
>> +}
>> +
>> +#if defined(RTE_TOOLCHAIN_GCC)
>> +#pragma GCC diagnostic pop
>> +#elif defined(RTE_TOOLCHAIN_CLANG)
>> +#pragma clang diagnostic pop
>> +#endif
>> +
>> +int
>> +rte_tel_data_add_array_uint_hex(struct rte_tel_data *d, uint64_t val,
>> + uint8_t display_bitwidth)
>> +{
>> + char hex_str[RTE_TEL_UINT_HEX_STR_BUF_LEN];
>> + int ret;
>> +
>> + ret = rte_tel_uint_to_hex_encoded_str(hex_str,
>> + RTE_TEL_UINT_HEX_STR_BUF_LEN, val,
>> + display_bitwidth);
> Small nit - the indentation here - and in a few other places does not match
> that in the rest of the file. The existing file only uses tabs for indent,
> and does not align continuations on brackets, it just double-indents.
All right. Let's keep it in line with the file.
>
> /Bruce
> .
next prev parent reply other threads:[~2022-12-15 1:32 UTC|newest]
Thread overview: 122+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-08 8:05 [PATCH 0/8] fix possible data truncation and conversion error Huisong Li
2022-12-08 8:05 ` [PATCH 1/8] telemetry: move to header to controllable range Huisong Li
2022-12-08 8:05 ` [PATCH 2/8] telemetry: add u32 telemetry data type API Huisong Li
2022-12-08 8:05 ` [PATCH 3/8] test: add test cases for u32 telemetry data API Huisong Li
2022-12-08 8:05 ` [PATCH 4/8] ethdev: fix possible data truncation and conversion error Huisong Li
2022-12-08 8:05 ` [PATCH 5/8] mempool: " Huisong Li
2022-12-08 8:05 ` [PATCH 6/8] cryptodev: fix possible data " Huisong Li
2022-12-08 8:05 ` [PATCH 7/8] mem: possible data truncation and " Huisong Li
2022-12-08 8:05 ` [PATCH 8/8] ethdev: telemetry convert capability related variable to hex Huisong Li
2022-12-08 10:55 ` Morten Brørup
2022-12-08 11:20 ` Bruce Richardson
2022-12-09 3:07 ` lihuisong (C)
2022-12-09 11:04 ` [PATCH V2 00/11] telemetry: add u32 value type and hex integer string API Huisong Li
2022-12-09 11:04 ` [PATCH V2 01/11] telemetry: move to header to controllable range Huisong Li
2022-12-09 11:04 ` [PATCH V2 02/11] telemetry: add u32 value type Huisong Li
2022-12-09 11:04 ` [PATCH V2 03/11] test: add test cases for adding u32 value API Huisong Li
2022-12-09 11:04 ` [PATCH V2 04/11] ethdev: fix possible data truncation and conversion error Huisong Li
2022-12-09 11:04 ` [PATCH V2 05/11] mempool: " Huisong Li
2022-12-09 11:04 ` [PATCH V2 06/11] cryptodev: fix possible data " Huisong Li
2022-12-09 11:04 ` [PATCH V2 07/11] mem: possible data truncation and " Huisong Li
2022-12-09 11:04 ` [PATCH V2 08/11] telemetry: refactor mapping betwween value and array type Huisong Li
2022-12-09 11:04 ` [PATCH V2 09/11] telemetry: support adding integer value as hexadecimal Huisong Li
2022-12-09 11:04 ` [PATCH V2 10/11] test: add test cases for adding hex integer values API Huisong Li
2022-12-09 11:04 ` [PATCH V2 11/11] ethdev: display capability values in hexadecimal format Huisong Li
2022-12-09 18:24 ` [PATCH V2 00/11] telemetry: add u32 value type and hex integer string API Morten Brørup
2022-12-12 6:23 ` lihuisong (C)
2022-12-11 9:02 ` fengchengwen
2022-12-12 6:42 ` [PATCH V3 " Huisong Li
2022-12-12 6:42 ` [PATCH V3 01/11] telemetry: move to header to controllable range Huisong Li
2022-12-12 6:42 ` [PATCH V3 02/11] telemetry: add u32 value type Huisong Li
2022-12-12 6:42 ` [PATCH V3 03/11] test: add test cases for adding u32 value API Huisong Li
2022-12-12 6:42 ` [PATCH V3 04/11] ethdev: fix possible data truncation and conversion error Huisong Li
2022-12-12 6:43 ` [PATCH V3 05/11] mempool: " Huisong Li
2022-12-12 6:43 ` [PATCH V3 06/11] cryptodev: fix possible data " Huisong Li
2022-12-12 6:43 ` [PATCH V3 07/11] mem: possible data truncation and " Huisong Li
2022-12-12 6:43 ` [PATCH V3 08/11] telemetry: refactor mapping betwween value and array type Huisong Li
2022-12-12 6:43 ` [PATCH V3 09/11] telemetry: support adding integer value as hexadecimal Huisong Li
2022-12-12 6:43 ` [PATCH V3 10/11] test: add test cases for adding hex integer values API Huisong Li
2022-12-12 6:43 ` [PATCH V3 11/11] ethdev: display capability values in hexadecimal format Huisong Li
2022-12-12 10:31 ` [PATCH V3 00/11] telemetry: add u32 value type and hex integer string API Bruce Richardson
2022-12-12 11:02 ` Morten Brørup
2022-12-12 11:20 ` Bruce Richardson
2022-12-12 12:03 ` Morten Brørup
2022-12-12 12:16 ` Bruce Richardson
2022-12-13 11:00 ` Morten Brørup
2022-12-13 17:12 ` Bruce Richardson
2022-12-13 3:02 ` lihuisong (C)
2022-12-13 10:15 ` [PATCH V4 0/9] telemetry: fix data truncation and conversion error and add hex integer API Huisong Li
2022-12-13 10:15 ` [PATCH V4 1/9] telemetry: move to header to controllable range Huisong Li
2022-12-13 17:10 ` Bruce Richardson
2022-12-14 2:44 ` lihuisong (C)
2022-12-13 10:15 ` [PATCH V4 2/9] ethdev: fix possible data truncation and conversion error Huisong Li
2022-12-13 10:15 ` [PATCH V4 3/9] mempool: " Huisong Li
2022-12-13 10:15 ` [PATCH V4 4/9] cryptodev: fix possible data " Huisong Li
2022-12-13 10:15 ` [PATCH V4 5/9] mem: possible data truncation and " Huisong Li
2022-12-13 10:15 ` [PATCH V4 6/9] telemetry: refactor mapping between value and array type Huisong Li
2022-12-13 16:57 ` Bruce Richardson
2022-12-14 2:46 ` lihuisong (C)
2022-12-13 10:15 ` [PATCH V4 7/9] telemetry: support adding integer value as hexadecimal Huisong Li
2022-12-13 17:09 ` Bruce Richardson
2022-12-14 2:44 ` lihuisong (C)
2022-12-14 7:28 ` Morten Brørup
2022-12-14 12:17 ` lihuisong (C)
2022-12-13 10:15 ` [PATCH V4 8/9] test: add test cases for adding hex integer value API Huisong Li
2022-12-13 10:15 ` [PATCH V4 9/9] ethdev: display capability values in hexadecimal format Huisong Li
2022-12-14 12:32 ` [PATCH V5 0/8] telemetry: fix data truncation and conversion error and add hex integer API Huisong Li
2022-12-14 12:32 ` [PATCH V5 1/8] telemetry: move to header to controllable range Huisong Li
2022-12-14 12:32 ` [PATCH V5 2/8] ethdev: fix possible data truncation and conversion error Huisong Li
2022-12-14 12:32 ` [PATCH V5 3/8] mempool: " Huisong Li
2022-12-14 12:32 ` [PATCH V5 4/8] cryptodev: fix possible data " Huisong Li
2022-12-14 12:32 ` [PATCH V5 5/8] mem: possible data truncation and " Huisong Li
2022-12-14 13:00 ` Morten Brørup
2022-12-15 1:11 ` lihuisong (C)
2022-12-15 7:04 ` Morten Brørup
2022-12-15 7:56 ` lihuisong (C)
2022-12-14 12:32 ` [PATCH V5 6/8] telemetry: support adding integer value as hexadecimal Huisong Li
2022-12-14 15:38 ` Bruce Richardson
2022-12-15 1:32 ` lihuisong (C) [this message]
2022-12-14 12:32 ` [PATCH V5 7/8] test: add test cases for adding hex integer value API Huisong Li
2022-12-14 12:32 ` [PATCH V5 8/8] ethdev: display capability values in hexadecimal format Huisong Li
2022-12-15 10:31 ` [PATCH V6 0/8] telemetry: fix data truncation and conversion error and add hex integer API Huisong Li
2022-12-15 10:31 ` [PATCH V6 1/8] telemetry: move to header to controllable range Huisong Li
2022-12-15 10:31 ` [PATCH V6 2/8] ethdev: fix possible data truncation and conversion error Huisong Li
2022-12-15 10:31 ` [PATCH V6 3/8] mempool: " Huisong Li
2022-12-15 10:31 ` [PATCH V6 4/8] cryptodev: fix possible data " Huisong Li
2022-12-15 10:31 ` [PATCH V6 5/8] mem: possible data truncation and " Huisong Li
2022-12-15 10:31 ` [PATCH V6 6/8] telemetry: support adding integer value as hexadecimal Huisong Li
2022-12-15 10:46 ` Bruce Richardson
2022-12-15 11:27 ` lihuisong (C)
2022-12-15 12:00 ` Morten Brørup
2022-12-15 12:15 ` Bruce Richardson
2022-12-15 12:24 ` Morten Brørup
2022-12-15 12:45 ` lihuisong (C)
2022-12-15 12:52 ` Morten Brørup
2022-12-15 13:08 ` Bruce Richardson
2022-12-16 1:15 ` lihuisong (C)
2022-12-15 10:31 ` [PATCH V6 7/8] test: add test cases for adding hex integer value API Huisong Li
2022-12-15 10:31 ` [PATCH V6 8/8] ethdev: display capability values in hexadecimal format Huisong Li
2022-12-16 1:54 ` [PATCH V7 0/8] telemetry: fix data truncation and conversion error and add hex integer API Huisong Li
2022-12-16 1:54 ` [PATCH V7 1/8] telemetry: move to header to controllable range Huisong Li
2022-12-16 1:54 ` [PATCH V7 2/8] ethdev: fix possible data truncation and conversion error Huisong Li
2022-12-16 1:54 ` [PATCH V7 3/8] mempool: " Huisong Li
2022-12-16 1:54 ` [PATCH V7 4/8] cryptodev: fix possible data " Huisong Li
2022-12-16 1:54 ` [PATCH V7 5/8] mem: possible data truncation and " Huisong Li
2022-12-16 1:54 ` [PATCH V7 6/8] telemetry: support adding integer value as hexadecimal Huisong Li
2022-12-16 1:54 ` [PATCH V7 7/8] test: add test cases for adding hex integer value API Huisong Li
2022-12-16 9:31 ` Bruce Richardson
2022-12-19 7:04 ` lihuisong (C)
2022-12-16 1:54 ` [PATCH V7 8/8] ethdev: display capability values in hexadecimal format Huisong Li
2022-12-19 7:06 ` [PATCH V8 0/8] telemetry: fix data truncation and conversion error and add hex integer API Huisong Li
2022-12-19 7:06 ` [PATCH V8 1/8] telemetry: move to header to controllable range Huisong Li
2022-12-19 7:06 ` [PATCH V8 2/8] ethdev: fix possible data truncation and conversion error Huisong Li
2022-12-19 7:06 ` [PATCH V8 3/8] mempool: " Huisong Li
2022-12-19 7:06 ` [PATCH V8 4/8] cryptodev: fix possible data " Huisong Li
2022-12-19 7:06 ` [PATCH V8 5/8] mem: possible data truncation and " Huisong Li
2022-12-19 7:06 ` [PATCH V8 6/8] telemetry: support adding integer value as hexadecimal Huisong Li
2022-12-19 9:19 ` Bruce Richardson
2022-12-19 7:06 ` [PATCH V8 7/8] test: add test cases for adding hex integer value API Huisong Li
2022-12-19 7:06 ` [PATCH V8 8/8] ethdev: display capability values in hexadecimal format Huisong Li
2023-01-16 12:06 ` [PATCH V8 0/8] telemetry: fix data truncation and conversion error and add hex integer API lihuisong (C)
2023-01-30 10:39 ` lihuisong (C)
2023-02-05 20:43 ` Thomas Monjalon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2a6492f6-5d3d-d107-e801-25dd90b15d3c@huawei.com \
--to=lihuisong@huawei.com \
--cc=andrew.rybchenko@oktetlabs.ru \
--cc=bruce.richardson@intel.com \
--cc=dev@dpdk.org \
--cc=fengchengwen@huawei.com \
--cc=huangdaode@huawei.com \
--cc=liudongdong3@huawei.com \
--cc=mb@smartsharesystems.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).