From: Sunil Kumar Kori <skori@marvell.com>
To: David Marchand <david.marchand@redhat.com>,
"dev@dpdk.org" <dev@dpdk.org>
Cc: "thomas@monjalon.net" <thomas@monjalon.net>,
Jerin Jacob Kollanukkaran <jerinj@marvell.com>
Subject: Re: [dpdk-dev] [EXT] [PATCH 6/8] trace: remove limitation on patterns number
Date: Mon, 4 May 2020 08:48:43 +0000 [thread overview]
Message-ID: <BY5PR18MB310518DDF6A39CF6B06E9739B4A60@BY5PR18MB3105.namprd18.prod.outlook.com> (raw)
In-Reply-To: <20200503203135.6493-7-david.marchand@redhat.com>
>-----Original Message-----
>From: David Marchand <david.marchand@redhat.com>
>Sent: Monday, May 4, 2020 2:02 AM
>To: dev@dpdk.org
>Cc: thomas@monjalon.net; Jerin Jacob Kollanukkaran <jerinj@marvell.com>;
>Sunil Kumar Kori <skori@marvell.com>
>Subject: [EXT] [PATCH 6/8] trace: remove limitation on patterns number
>
>External Email
>
>----------------------------------------------------------------------
>There is nothing performance sensitive in this list, use dynamic allocations and
>remove the arbitrary limit on the number of trace patterns a user can pass.
>
>Signed-off-by: David Marchand <david.marchand@redhat.com>
>---
> lib/librte_eal/common/eal_common_trace.c | 10 +++---
> .../common/eal_common_trace_utils.c | 33 ++++++++-----------
> lib/librte_eal/common/eal_trace.h | 8 ++---
> 3 files changed, 23 insertions(+), 28 deletions(-)
>
>diff --git a/lib/librte_eal/common/eal_common_trace.c
>b/lib/librte_eal/common/eal_common_trace.c
>index 5a365c61da..875553d7e5 100644
>--- a/lib/librte_eal/common/eal_common_trace.c
>+++ b/lib/librte_eal/common/eal_common_trace.c
>@@ -21,7 +21,7 @@ static RTE_DEFINE_PER_LCORE(char,
>ctf_field[TRACE_CTF_FIELD_SIZE]); static RTE_DEFINE_PER_LCORE(int,
>ctf_count);
>
> static struct trace_point_head tp_list = STAILQ_HEAD_INITIALIZER(tp_list); -
>static struct trace trace;
>+static struct trace trace = { .args =
>+STAILQ_HEAD_INITIALIZER(trace.args), };
>
> struct trace *
> trace_obj_get(void)
>@@ -38,7 +38,7 @@ trace_list_head_get(void) int
> eal_trace_init(void)
> {
>- uint8_t i;
>+ struct trace_arg *arg;
>
> /* Trace memory should start with 8B aligned for natural alignment */
> RTE_BUILD_BUG_ON((offsetof(struct __rte_trace_header, mem) % 8)
>!= 0); @@ -49,7 +49,7 @@ eal_trace_init(void)
> goto fail;
> }
>
>- if (trace.args.nb_args)
>+ if (!STAILQ_EMPTY(&trace.args))
> trace.status = true;
>
> if (!rte_trace_is_enabled())
>@@ -82,8 +82,8 @@ eal_trace_init(void)
> goto fail;
>
> /* Apply global configurations */
>- for (i = 0; i < trace.args.nb_args; i++)
>- trace_args_apply(trace.args.args[i]);
>+ STAILQ_FOREACH(arg, &trace.args, next)
>+ trace_args_apply(arg->val);
>
> rte_trace_mode_set(trace.mode);
>
>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 ?
>
>- 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.
> 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;
> }
>
>@@ -164,13 +159,13 @@ void
> eal_trace_args_free(void)
> {
> struct trace *trace = trace_obj_get();
>- int i;
>+ struct trace_arg *arg;
>
>- for (i = 0; i < trace->args.nb_args; i++) {
>- if (trace->args.args[i]) {
>- free((void *)trace->args.args[i]);
>- trace->args.args[i] = NULL;
>- }
>+ while (!STAILQ_EMPTY(&trace->args)) {
>+ arg = STAILQ_FIRST(&trace->args);
>+ STAILQ_REMOVE_HEAD(&trace->args, next);
>+ free(arg->val);
>+ free(arg);
> }
> }
>
>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.
> uint32_t nb_trace_points;
> uint32_t nb_trace_mem_list;
> struct thread_mem_meta *lcore_meta;
>--
>2.23.0
next prev parent reply other threads:[~2020-05-04 8:48 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-03 20:31 [dpdk-dev] [PATCH 0/8] Traces cleanup for rc2 David Marchand
2020-05-03 20:31 ` [dpdk-dev] [PATCH 1/8] cryptodev: fix trace points registration David Marchand
2020-05-04 7:41 ` [dpdk-dev] [EXT] " Sunil Kumar Kori
2020-05-03 20:31 ` [dpdk-dev] [PATCH 2/8] trace: simplify trace point registration David Marchand
2020-05-04 2:46 ` Jerin Jacob
2020-05-04 14:02 ` Thomas Monjalon
2020-05-04 14:04 ` David Marchand
2020-05-04 14:39 ` Jerin Jacob
2020-05-04 17:08 ` David Marchand
2020-05-04 17:19 ` Jerin Jacob
2020-05-04 17:40 ` David Marchand
2020-05-04 17:54 ` Jerin Jacob
2020-05-04 21:31 ` Thomas Monjalon
2020-05-05 3:43 ` Jerin Jacob
2020-05-05 7:01 ` Thomas Monjalon
2020-05-05 7:17 ` Jerin Jacob
2020-05-05 7:24 ` Thomas Monjalon
2020-05-05 7:33 ` Jerin Jacob
2020-05-05 8:23 ` David Marchand
2020-05-05 10:12 ` Jerin Jacob
2020-05-05 10:26 ` Thomas Monjalon
2020-05-05 10:46 ` Jerin Jacob
2020-05-05 11:48 ` Olivier Matz
2020-05-05 11:35 ` David Marchand
2020-05-05 12:26 ` Jerin Jacob
2020-05-05 15:25 ` Jerin Jacob
2020-05-05 16:28 ` David Marchand
2020-05-05 16:46 ` Jerin Jacob
2020-05-05 16:58 ` Thomas Monjalon
2020-05-05 17:08 ` Jerin Jacob
2020-05-05 17:09 ` Jerin Jacob
2020-05-05 17:20 ` Thomas Monjalon
2020-05-05 17:28 ` Jerin Jacob
2020-05-05 20:10 ` Thomas Monjalon
2020-05-06 6:11 ` Jerin Jacob
2020-07-04 14:31 ` Jerin Jacob
2020-07-04 15:14 ` [dpdk-dev] [PATCH v2] " David Marchand
2020-07-05 19:41 ` Thomas Monjalon
2020-05-03 20:31 ` [dpdk-dev] [PATCH 3/8] trace: simplify trace point headers David Marchand
2020-05-04 6:12 ` Jerin Jacob
2020-05-03 20:31 ` [dpdk-dev] [PATCH 4/8] trace: avoid confusion on optarg David Marchand
2020-05-04 7:55 ` [dpdk-dev] [EXT] " Sunil Kumar Kori
2020-05-04 14:09 ` David Marchand
2020-05-05 5:45 ` Sunil Kumar Kori
2020-05-05 5:47 ` Sunil Kumar Kori
2020-05-03 20:31 ` [dpdk-dev] [PATCH 5/8] trace: remove unneeded checks in internal API David Marchand
2020-05-04 8:16 ` [dpdk-dev] [EXT] " Sunil Kumar Kori
2020-05-03 20:31 ` [dpdk-dev] [PATCH 6/8] trace: remove limitation on patterns number David Marchand
2020-05-04 8:48 ` Sunil Kumar Kori [this message]
2020-05-04 14:14 ` [dpdk-dev] [EXT] " David Marchand
2020-05-05 5:54 ` Sunil Kumar Kori
2020-05-03 20:31 ` [dpdk-dev] [PATCH 7/8] trace: remove string duplication David Marchand
2020-05-04 9:01 ` [dpdk-dev] [EXT] " Sunil Kumar Kori
2020-05-03 20:31 ` [dpdk-dev] [PATCH 8/8] trace: fix build with gcc 10 David Marchand
2020-05-06 13:06 ` [dpdk-dev] [PATCH 0/8] Traces cleanup for rc2 David Marchand
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=BY5PR18MB310518DDF6A39CF6B06E9739B4A60@BY5PR18MB3105.namprd18.prod.outlook.com \
--to=skori@marvell.com \
--cc=david.marchand@redhat.com \
--cc=dev@dpdk.org \
--cc=jerinj@marvell.com \
--cc=thomas@monjalon.net \
/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).