[dpdk-dev] [EXT] [PATCH 6/8] trace: remove limitation on patterns number
Sunil Kumar Kori
skori at marvell.com
Tue May 5 07:54:23 CEST 2020
>-----Original Message-----
>From: David Marchand <david.marchand at redhat.com>
>Sent: Monday, May 4, 2020 7:44 PM
>To: Sunil Kumar Kori <skori at marvell.com>
>Cc: dev at dpdk.org; thomas at monjalon.net; Jerin Jacob Kollanukkaran
><jerinj at marvell.com>
>Subject: Re: [EXT] [PATCH 6/8] trace: remove limitation on patterns number
>
>On Mon, May 4, 2020 at 10:48 AM Sunil Kumar Kori <skori at marvell.com>
>wrote:
>> >diff --git a/lib/librte_eal/common/eal_common_trace_utils.c
>> >b/lib/librte_eal/common/eal_common_trace_utils.c
>> >index 4077acf428..15384ce4f1 100644
>> >--- a/lib/librte_eal/common/eal_common_trace_utils.c
>> >+++ b/lib/librte_eal/common/eal_common_trace_utils.c
>> >@@ -138,25 +138,20 @@ int
>> > eal_trace_args_save(const char *val) {
>> > struct trace *trace = trace_obj_get();
>> >- char *trace_args;
>> >- uint8_t nb_args;
>> >+ struct trace_arg *arg = malloc(sizeof(*arg));
>> Won't "malloc(sizeof(struct trace_arg))" be more readable ?
>
>ptr = malloc(sizeof(*ptr)); is more common in EAL code.
>I prefer this form.
>
>
Ack
>>
>> >
>> >- nb_args = trace->args.nb_args;
>> >-
>> >- if (nb_args >= TRACE_MAX_ARGS) {
>> >- trace_err("ignoring trace %s as limit exceeds", val);
>> >- return 0;
>> >+ if (arg == NULL) {
>> >+ trace_err("failed to allocate memory for %s", val);
>> >+ return -ENOMEM;
>> > }
>> >
>> >- trace_args = calloc(1, (strlen(val) + 1));
>> >- if (trace_args == NULL) {
>> >- trace_err("fail to allocate memory for %s", val);
>> >+ arg->val = strdup(val);
>> >+ if (arg->val == NULL) {
>> >+ trace_err("failed to allocate memory for %s", val);
>> "arg" needs to be freed here.
>
>argh, indeed.
>
>
Sorry, I didn't understand "argh" but assuming that you are agreed.
>>
>> > return -ENOMEM;
>> > }
>> >
>> >- memcpy(trace_args, val, strlen(val));
>> >- trace->args.args[nb_args++] = trace_args;
>> >- trace->args.nb_args = nb_args;
>> >+ STAILQ_INSERT_TAIL(&trace->args, arg, next);
>> > return 0;
>> > }
>> >
>
>> >diff --git a/lib/librte_eal/common/eal_trace.h
>> >b/lib/librte_eal/common/eal_trace.h
>> >index 7d95bd2aa9..943b5ecbc5 100644
>> >--- a/lib/librte_eal/common/eal_trace.h
>> >+++ b/lib/librte_eal/common/eal_trace.h
>> >@@ -46,9 +46,9 @@ struct thread_mem_meta {
>> > enum trace_area_e area;
>> > };
>> >
>> >-struct trace_args {
>> >- uint8_t nb_args;
>> >- char *args[TRACE_MAX_ARGS];
>> >+struct trace_arg {
>> >+ STAILQ_ENTRY(trace_arg) next;
>> >+ char *val;
>> > };
>> >
>> > struct trace {
>> >@@ -59,7 +59,7 @@ struct trace {
>> > enum rte_trace_mode mode;
>> > rte_uuid_t uuid;
>> > uint32_t buff_len;
>> >- struct trace_args args;
>> >+ STAILQ_HEAD(trace_arg_head, trace_arg) args;
>> "trace_arg_head" is not required. It can be removed.
>
>Ack.
>
>
>>
>> > uint32_t nb_trace_points;
>> > uint32_t nb_trace_mem_list;
>> > struct thread_mem_meta *lcore_meta;
>> >--
>> >2.23.0
>>
>
>
>--
>David Marchand
More information about the dev
mailing list