* [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
* [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
[parent not found: <534CA193.2000604-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>]
* 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
* 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-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-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
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.