DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH] eal: parse args before any kinds of init
@ 2014-04-15  3:03 Wang Sheng-Hui
  2014-04-17 21:58 ` Thomas Monjalon
  2014-05-05 15:50 ` Thomas Monjalon
  0 siblings, 2 replies; 6+ messages in thread
From: Wang Sheng-Hui @ 2014-04-15  3:03 UTC (permalink / raw)
  To: dev


Parse args first, to resolve any invalid args and give out the usage string.
E.g './helloworld --invalid', the '--invalid' will be checked before any init.
After the options are checked, take any init actions.

Signed-off-by: Wang Sheng-Hui <shhuiw@gmail.com>
---
 lib/librte_eal/linuxapp/eal/eal.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/lib/librte_eal/linuxapp/eal/eal.c b/lib/librte_eal/linuxapp/eal/eal.c
index 3ded563..9d20718 100644
--- a/lib/librte_eal/linuxapp/eal/eal.c
+++ b/lib/librte_eal/linuxapp/eal/eal.c
@@ -637,6 +637,11 @@ eal_parse_args(int argc, char **argv)
        };
        struct shared_driver *solib;

+       /* check the no args case */
+       if (argc == 1) {
+               eal_usage(prgname);
+               return (-1);
+       }
        argvopt = argv;

        internal_config.memory = 0;
@@ -964,16 +969,16 @@ rte_eal_init(int argc, char **argv)

        thread_id = pthread_self();

+       fctret = eal_parse_args(argc, argv);
+       if (fctret < 0)
+               exit(1);
+
        if (rte_eal_log_early_init() < 0)
                rte_panic("Cannot init early logs\n");

        if (rte_eal_cpu_init() < 0)
                rte_panic("Cannot detect lcores\n");

-       fctret = eal_parse_args(argc, argv);
-       if (fctret < 0)
-               exit(1);
-
        if (internal_config.no_hugetlbfs == 0 &&
                        internal_config.process_type != RTE_PROC_SECONDARY &&
                        internal_config.xen_dom0_support == 0 &&
-- 
1.8.3.2

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [dpdk-dev] [PATCH] eal: parse args before any kinds of init
  2014-04-15  3:03 [dpdk-dev] [PATCH] eal: parse args before any kinds of init Wang Sheng-Hui
@ 2014-04-17 21:58 ` Thomas Monjalon
  2014-04-18  0:30   ` Wang Sheng-Hui
  2014-05-05 15:50 ` Thomas Monjalon
  1 sibling, 1 reply; 6+ messages in thread
From: Thomas Monjalon @ 2014-04-17 21:58 UTC (permalink / raw)
  To: Wang Sheng-Hui; +Cc: dev

Hi,

2014-04-15 11:03, Wang Sheng-Hui:
> Parse args first, to resolve any invalid args and give out the usage string.
> E.g './helloworld --invalid', the '--invalid' will be checked before any
> init. After the options are checked, take any init actions.
> 
> Signed-off-by: Wang Sheng-Hui <shhuiw@gmail.com>
[...]
> +       fctret = eal_parse_args(argc, argv);
> +       if (fctret < 0)
> +               exit(1);
> +
>         if (rte_eal_log_early_init() < 0)
>                 rte_panic("Cannot init early logs\n");
> 
>         if (rte_eal_cpu_init() < 0)
>                 rte_panic("Cannot detect lcores\n");
> 
> -       fctret = eal_parse_args(argc, argv);
> -       if (fctret < 0)
> -               exit(1);
> -

Thank you for trying to improve this part.

I think you cannot move eal_parse_args before rte_eal_log_early_init because 
eal_parse_args uses RTE_LOG.
I cannot see why rte_eal_cpu_init is call before argument parsing but we 
should double check it.

-- 
Thomas

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [dpdk-dev] [PATCH] eal: parse args before any kinds of init
  2014-04-17 21:58 ` Thomas Monjalon
@ 2014-04-18  0:30   ` Wang Sheng-Hui
  0 siblings, 0 replies; 6+ messages in thread
From: Wang Sheng-Hui @ 2014-04-18  0:30 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: dev

Thanks, Thomas.



2014-04-18 5:58 GMT+08:00 Thomas Monjalon <thomas.monjalon@6wind.com>:

> Hi,
>
> 2014-04-15 11:03, Wang Sheng-Hui:
> > Parse args first, to resolve any invalid args and give out the usage
> string.
> > E.g './helloworld --invalid', the '--invalid' will be checked before any
> > init. After the options are checked, take any init actions.
> >
> > Signed-off-by: Wang Sheng-Hui <shhuiw@gmail.com>
> [...]
> > +       fctret = eal_parse_args(argc, argv);
> > +       if (fctret < 0)
> > +               exit(1);
> > +
> >         if (rte_eal_log_early_init() < 0)
> >                 rte_panic("Cannot init early logs\n");
> >
> >         if (rte_eal_cpu_init() < 0)
> >                 rte_panic("Cannot detect lcores\n");
> >
> > -       fctret = eal_parse_args(argc, argv);
> > -       if (fctret < 0)
> > -               exit(1);
> > -
>
> Thank you for trying to improve this part.
>
> I think you cannot move eal_parse_args before rte_eal_log_early_init
> because
> eal_parse_args uses RTE_LOG.
> I cannot see why rte_eal_cpu_init is call before argument parsing but we
> should double check it.
>
> --
> Thomas
>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [dpdk-dev] [PATCH] eal: parse args before any kinds of init
  2014-04-15  3:03 [dpdk-dev] [PATCH] eal: parse args before any kinds of init Wang Sheng-Hui
  2014-04-17 21:58 ` Thomas Monjalon
@ 2014-05-05 15:50 ` Thomas Monjalon
  2014-05-07 13:06   ` Thomas Monjalon
  1 sibling, 1 reply; 6+ messages in thread
From: Thomas Monjalon @ 2014-05-05 15:50 UTC (permalink / raw)
  To: Wang Sheng-Hui; +Cc: dev

2014-04-15 11:03, Wang Sheng-Hui:
> Parse args first, to resolve any invalid args and give out the usage string.
> E.g './helloworld --invalid', the '--invalid' will be checked before any
> init. After the options are checked, take any init actions.
> 
> Signed-off-by: Wang Sheng-Hui <shhuiw@gmail.com>
[...]
> @@ -637,6 +637,11 @@ eal_parse_args(int argc, char **argv)
>         };
>         struct shared_driver *solib;
> 
> +       /* check the no args case */
> +       if (argc == 1) {
> +               eal_usage(prgname);
> +               return (-1);
> +       }
>         argvopt = argv;

I wonder if there are some use cases where default values could be used for 
first tests.
If we can set some default values for coremask and memory channels, then we 
can accept having no argument.
Maybe that an option -h would be needed.

> @@ -964,16 +969,16 @@ rte_eal_init(int argc, char **argv)
> 
>         thread_id = pthread_self();
> 
> +       fctret = eal_parse_args(argc, argv);
> +       if (fctret < 0)
> +               exit(1);
> +
>         if (rte_eal_log_early_init() < 0)
>                 rte_panic("Cannot init early logs\n");
> 
>         if (rte_eal_cpu_init() < 0)
>                 rte_panic("Cannot detect lcores\n");
> 
> -       fctret = eal_parse_args(argc, argv);
> -       if (fctret < 0)
> -               exit(1);
> -
>         if (internal_config.no_hugetlbfs == 0 &&
>                         internal_config.process_type != RTE_PROC_SECONDARY
> && internal_config.xen_dom0_support == 0 &&

You should move eal_parse_args() just after rte_eal_log_early_init() in order 
to have logs available.

Could you send a v2 patch with this kind of change for BSD also.

Thank you
-- 
Thomas

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [dpdk-dev] [PATCH] eal: parse args before any kinds of init
  2014-05-05 15:50 ` Thomas Monjalon
@ 2014-05-07 13:06   ` Thomas Monjalon
  0 siblings, 0 replies; 6+ messages in thread
From: Thomas Monjalon @ 2014-05-07 13:06 UTC (permalink / raw)
  To: Wang Sheng-Hui; +Cc: dev

2014-05-05 17:50, Thomas Monjalon:
> 2014-04-15 11:03, Wang Sheng-Hui:
> > Parse args first, to resolve any invalid args and give out the usage
> > string. E.g './helloworld --invalid', the '--invalid' will be checked
> > before any init. After the options are checked, take any init actions.
> > 
> > Signed-off-by: Wang Sheng-Hui <shhuiw@gmail.com>
> 
> [...]
> > @@ -964,16 +969,16 @@ rte_eal_init(int argc, char **argv)
> > 
> >         thread_id = pthread_self();
> > 
> > +       fctret = eal_parse_args(argc, argv);
> > +       if (fctret < 0)
> > +               exit(1);
> > +
> > 
> >         if (rte_eal_log_early_init() < 0)
> >         
> >                 rte_panic("Cannot init early logs\n");
> >         
> >         if (rte_eal_cpu_init() < 0)
> >         
> >                 rte_panic("Cannot detect lcores\n");
> > 
> > -       fctret = eal_parse_args(argc, argv);
> > -       if (fctret < 0)
> > -               exit(1);
> > -
> 
> You should move eal_parse_args() just after rte_eal_log_early_init() in
> order to have logs available.

When double checking, I saw this commit which justify why rte_eal_cpu_init() 
is before eal_parse_args():
	http://dpdk.org/browse/dpdk/commit/?id=f563a3727b5dba

If the goal is to move debug lines in cpu_init, you should split 
rte_eal_log_early_init() in 2 functions: 1 to detect cores and 1 for debug 
summary.
By the way, these are debug logs which should be disabled by default.

-- 
Thomas

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [dpdk-dev] [PATCH] eal: parse args before any kinds of init
@ 2014-04-15  3:00 Wang Sheng-Hui
  0 siblings, 0 replies; 6+ messages in thread
From: Wang Sheng-Hui @ 2014-04-15  3:00 UTC (permalink / raw)
  To: dev


Parse args first, to resolve any invalid args and give out the usage string.
E.g './helloworld --invalid', the '--invalid' will be checked before any init.
After the options are checked, take any init actions.

Signed-off-by: Wang Sheng-Hui <shhuiw@gmail.com>
---
 lib/librte_eal/linuxapp/eal/eal.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/lib/librte_eal/linuxapp/eal/eal.c b/lib/librte_eal/linuxapp/eal/eal.c
index 3ded563..9d20718 100644
--- a/lib/librte_eal/linuxapp/eal/eal.c
+++ b/lib/librte_eal/linuxapp/eal/eal.c
@@ -637,6 +637,11 @@ eal_parse_args(int argc, char **argv)
        };
        struct shared_driver *solib;

+       /* check the no args case */
+       if (argc == 1) {
+               eal_usage(prgname);
+               return (-1);
+       }
        argvopt = argv;

        internal_config.memory = 0;
@@ -964,16 +969,16 @@ rte_eal_init(int argc, char **argv)

        thread_id = pthread_self();

+       fctret = eal_parse_args(argc, argv);
+       if (fctret < 0)
+               exit(1);
+
        if (rte_eal_log_early_init() < 0)
                rte_panic("Cannot init early logs\n");

        if (rte_eal_cpu_init() < 0)
                rte_panic("Cannot detect lcores\n");

-       fctret = eal_parse_args(argc, argv);
-       if (fctret < 0)
-               exit(1);
-
        if (internal_config.no_hugetlbfs == 0 &&
                        internal_config.process_type != RTE_PROC_SECONDARY &&
                        internal_config.xen_dom0_support == 0 &&
-- 
1.8.3.2

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2014-05-07 13:06 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-04-15  3:03 [dpdk-dev] [PATCH] eal: parse args before any kinds of init Wang Sheng-Hui
2014-04-17 21:58 ` Thomas Monjalon
2014-04-18  0:30   ` Wang Sheng-Hui
2014-05-05 15:50 ` Thomas Monjalon
2014-05-07 13:06   ` Thomas Monjalon
  -- strict thread matches above, loose matches on Subject: below --
2014-04-15  3:00 Wang Sheng-Hui

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).