All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ferruh Yigit <ferruh.yigit@amd.com>
To: David Marchand <david.marchand@redhat.com>
Cc: dev <dev@dpdk.org>, Thomas Monjalon <thomas@monjalon.net>,
	Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>,
	Xiaoyun Li <xiaoyun.li@intel.com>,
	 Aman Singh <aman.deep.singh@intel.com>,
	Yuying Zhang <yuying.zhang@intel.com>,
	Bruce Richardson <bruce.richardson@intel.com>
Subject: Re: [PATCH 2/6] app/testpmd: register driver specific commands
Date: Tue, 24 May 2022 12:43:53 +0100	[thread overview]
Message-ID: <63b3fadd-f700-ae30-8174-102d91a0794d@amd.com> (raw)
In-Reply-To: <CAJFAV8zSvkB3RMaDwpc6i1sjSpzOA8=6ZbNCtko22r6zuUqaGA@mail.gmail.com>

On 5/24/2022 11:53 AM, David Marchand wrote:
> [CAUTION: External Email]
> 
> On Mon, May 23, 2022 at 8:10 PM Ferruh Yigit <ferruh.yigit@amd.com> wrote:
>>
>> On 5/23/2022 8:10 AM, David Marchand wrote:
>>> +int
>>> +init_cmdline(void)
>>> +{
>>> +       struct testpmd_commands *c;
>>> +       cmdline_parse_ctx_t *ctx;
>>> +       unsigned int count = 0;
>>> +       unsigned int i;
>>> +
>>> +       /* initialize non-constant commands */
>>> +       cmd_set_fwd_mode_init();
>>> +       cmd_set_fwd_retry_mode_init();
>>> +
>>> +       main_ctx = NULL;
>>> +       for (i = 0; builtin_ctx[i] != NULL; i++) {
>>> +               ctx = realloc(main_ctx, (count + i + 1) * sizeof(*ctx));
>>> +               if (ctx == NULL)
>>> +                       goto err;
>>> +               main_ctx = ctx;
>>
>> Instead of 'realloc()', check and assign pointer in each entry, what do
>> you think about first calculate the size and alloc once, both for
>> 'builtin_ctx' & driver specific command?
>> But of course trade off is to loop twice in that case.
> 
> Yes, I hesitated because of the duplicated loop (and I found no
> "elegant" macro).
> I'm ok with the suggestion, this makes the code simpler.
> 
> 
> int
> init_cmdline(void)
> {
>          struct testpmd_commands *c;
>          unsigned int count;
>          unsigned int i;
> 
>          /* initialize non-constant commands */
>          cmd_set_fwd_mode_init();
>          cmd_set_fwd_retry_mode_init();
> 
>          count = 0;
>          for (i = 0; builtin_ctx[i] != NULL; i++, count++)
>                  ;
>          TAILQ_FOREACH(c, &commands_head, next) {
>                  for (i = 0; c->commands[i].ctx != NULL; i++, count++)
>                          ;
>          }
> 
>          /* cmdline expects a NULL terminated array */
>          main_ctx = calloc(count + 1, sizeof(main_ctx[0]));
>          if (main_ctx == NULL)
>                  return -1;
> 
>          count = 0;
>          for (i = 0; builtin_ctx[i] != NULL; i++, count++)
>                  main_ctx[count] = builtin_ctx[i];
>          TAILQ_FOREACH(c, &commands_head, next) {
>                  for (i = 0; c->commands[i].ctx != NULL; i++, count++)
>                          main_ctx[count] = c->commands[i].ctx;
>          }
> 
>          return 0;
> }
> 

ack


  reply	other threads:[~2022-05-24 11:43 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-13  7:57 [RFC PATCH 0/4] Split driver specific commands out of testpmd David Marchand
2022-05-13  7:57 ` [RFC PATCH 1/4] app/testpmd: register driver specific commands David Marchand
2022-05-13 10:30   ` David Marchand
2022-05-13  7:57 ` [RFC PATCH 2/4] net/bonding: move testpmd commands David Marchand
2022-05-13 10:09   ` Min Hu (Connor)
2022-05-18 17:24     ` David Marchand
2022-05-18 23:25       ` Konstantin Ananyev
2022-05-19  7:40         ` David Marchand
2022-05-19 11:26           ` Thomas Monjalon
2022-05-20  6:59             ` Andrew Rybchenko
2022-05-24  9:40               ` Konstantin Ananyev
2022-05-24 10:15                 ` Thomas Monjalon
2022-05-24 22:41                   ` Konstantin Ananyev
2022-05-13  7:57 ` [RFC PATCH 3/4] net/i40e: " David Marchand
2022-05-13  7:57 ` [RFC PATCH 4/4] net/ixgbe: " David Marchand
2022-05-18 19:46 ` [RFC PATCH v2 0/5] Split driver specific commands out of testpmd David Marchand
2022-05-18 19:46   ` [RFC PATCH v2 1/5] app/testpmd: mark cmdline symbols as static David Marchand
2022-05-20  6:28     ` Andrew Rybchenko
2022-05-18 19:46   ` [RFC PATCH v2 2/5] app/testpmd: register driver specific commands David Marchand
2022-05-20  6:55     ` Andrew Rybchenko
2022-05-18 19:46   ` [RFC PATCH v2 3/5] net/bonding: move testpmd commands David Marchand
2022-05-20  6:55     ` Andrew Rybchenko
2022-05-18 19:46   ` [RFC PATCH v2 4/5] net/i40e: " David Marchand
2022-05-18 19:46   ` [RFC PATCH v2 5/5] net/ixgbe: " David Marchand
2022-05-20  7:04   ` [RFC PATCH v2 0/5] Split driver specific commands out of testpmd Andrew Rybchenko
2022-05-23  7:10 ` [PATCH 0/6] " David Marchand
2022-05-23  7:10   ` [PATCH 1/6] app/testpmd: mark most cmdline symbols as static David Marchand
2022-05-23 10:19     ` Dumitrescu, Cristian
2022-05-23 18:09       ` Ferruh Yigit
2022-05-23  7:10   ` [PATCH 2/6] app/testpmd: register driver specific commands David Marchand
2022-05-23 18:10     ` Ferruh Yigit
2022-05-24 10:53       ` David Marchand
2022-05-24 11:43         ` Ferruh Yigit [this message]
2022-05-24 17:21     ` Thomas Monjalon
2022-05-24 17:44       ` David Marchand
2022-05-24 17:51         ` Thomas Monjalon
2022-05-23  7:10   ` [PATCH 3/6] net/bonding: move testpmd commands David Marchand
2022-05-23 18:10     ` Ferruh Yigit
2022-06-17  5:06     ` [PATCH v2] " David Marchand
2022-06-20 17:53       ` Ferruh Yigit
2022-05-23  7:10   ` [PATCH 4/6] net/i40e: " David Marchand
2022-06-17  5:07     ` [PATCH v2] " David Marchand
2022-06-20 17:53       ` Ferruh Yigit
2022-05-23  7:10   ` [PATCH 5/6] app/testpmd: drop ixgbe bypass commands David Marchand
2022-05-23 18:10     ` Ferruh Yigit
2022-06-17  5:07     ` [PATCH v2 1/3] app/testpmd: restore " David Marchand
2022-06-17  5:07       ` [PATCH v2 2/3] net/ixgbe: move testpmd commands David Marchand
2022-06-17  5:07       ` [PATCH v2 3/3] net/ixgbe: move bypass init in a testpmd command David Marchand
2022-06-20 19:04         ` Ferruh Yigit
2022-06-23 12:35           ` Zhang, Qi Z
2022-07-21  8:05     ` [PATCH v3 1/3] app/testpmd: restore ixgbe bypass commands David Marchand
2022-07-21  8:05       ` [PATCH v3 2/3] net/ixgbe: move testpmd commands David Marchand
2022-07-21  8:05       ` [PATCH v3 3/3] net/ixgbe: move bypass init in a testpmd command David Marchand
2022-08-25 10:37         ` Ferruh Yigit
2022-08-25 11:44       ` [PATCH v3 1/3] app/testpmd: restore ixgbe bypass commands Ferruh Yigit
2022-05-23  7:10   ` [PATCH 6/6] net/ixgbe: move testpmd commands David Marchand
2022-05-23 18:09   ` [PATCH 0/6] Split driver specific commands out of testpmd Ferruh Yigit
2022-05-24 20:06 ` [PATCH v2 0/2] " David Marchand
2022-05-24 20:06   ` [PATCH v2 1/2] app/testpmd: mark most cmdline symbols as static David Marchand
2022-05-31 15:15     ` Andrew Rybchenko
2022-05-24 20:06   ` [PATCH v2 2/2] app/testpmd: register driver specific commands David Marchand
2022-05-24 20:28     ` Thomas Monjalon
2022-05-31 15:14       ` Andrew Rybchenko
2022-05-31 15:18         ` David Marchand
2022-05-31 15:18   ` [PATCH v2 0/2] Split driver specific commands out of testpmd Andrew Rybchenko

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=63b3fadd-f700-ae30-8174-102d91a0794d@amd.com \
    --to=ferruh.yigit@amd.com \
    --cc=aman.deep.singh@intel.com \
    --cc=andrew.rybchenko@oktetlabs.ru \
    --cc=bruce.richardson@intel.com \
    --cc=david.marchand@redhat.com \
    --cc=dev@dpdk.org \
    --cc=thomas@monjalon.net \
    --cc=xiaoyun.li@intel.com \
    --cc=yuying.zhang@intel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.