All of lore.kernel.org
 help / color / mirror / Atom feed
* [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-VfR2kkLFssw


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-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
---
 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 related	[flat|nested] 6+ messages in thread

* Re: [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-VfR2kkLFssw

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-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
> 
> [...]
> > @@ -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

* Re: [PATCH] eal: parse args before any kinds of init
       [not found] ` <534CA193.2000604-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
  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-VfR2kkLFssw

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-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
[...]
> @@ -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: [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-VfR2kkLFssw

Thanks, Thomas.



2014-04-18 5:58 GMT+08:00 Thomas Monjalon <thomas.monjalon-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>:

> 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-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
> [...]
> > +       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: [PATCH] eal: parse args before any kinds of init
       [not found] ` <534CA193.2000604-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
@ 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-VfR2kkLFssw

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-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
[...]
> +       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

* [PATCH] eal: parse args before any kinds of init
@ 2014-04-15  3:03 Wang Sheng-Hui
       [not found] ` <534CA193.2000604-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
  0 siblings, 1 reply; 6+ messages in thread
From: Wang Sheng-Hui @ 2014-04-15  3:03 UTC (permalink / raw)
  To: dev-VfR2kkLFssw


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-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
---
 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 related	[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:00 [PATCH] eal: parse args before any kinds of init Wang Sheng-Hui
2014-04-15  3:03 Wang Sheng-Hui
     [not found] ` <534CA193.2000604-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
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

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.