From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id C49A9A0543; Thu, 15 Dec 2022 02:49:10 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B2C7340684; Thu, 15 Dec 2022 02:49:10 +0100 (CET) Received: from szxga08-in.huawei.com (szxga08-in.huawei.com [45.249.212.255]) by mails.dpdk.org (Postfix) with ESMTP id B3EFA410EA for ; Thu, 15 Dec 2022 02:49:08 +0100 (CET) Received: from kwepemm600004.china.huawei.com (unknown [172.30.72.55]) by szxga08-in.huawei.com (SkyGuard) with ESMTP id 4NXZr82GLZz16LdR; Thu, 15 Dec 2022 09:48:08 +0800 (CST) Received: from [10.67.103.231] (10.67.103.231) by kwepemm600004.china.huawei.com (7.193.23.242) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Thu, 15 Dec 2022 09:49:07 +0800 Message-ID: <61b3f999-ec7d-9201-dcf3-cbdfbc0d705c@huawei.com> Date: Thu, 15 Dec 2022 09:49:06 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.2.0 Subject: Re: [RFC PATCH 2/7] telemetry: add uint type as alias for u64 To: Bruce Richardson , CC: =?UTF-8?Q?Morten_Br=c3=b8rup?= References: <20221213182730.97065-1-bruce.richardson@intel.com> <20221213182730.97065-3-bruce.richardson@intel.com> From: "lihuisong (C)" In-Reply-To: <20221213182730.97065-3-bruce.richardson@intel.com> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 8bit X-Originating-IP: [10.67.103.231] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To kwepemm600004.china.huawei.com (7.193.23.242) X-CFilter-Loop: Reflected 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 在 2022/12/14 2:27, Bruce Richardson 写道: > 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_experimental int Right? > +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;