eal: fix log level of early messages
authorKeith Wiles <keith.wiles@intel.com>
Mon, 8 Jun 2015 21:55:52 +0000 (16:55 -0500)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Mon, 22 Jun 2015 19:52:40 +0000 (21:52 +0200)
The RTE_LOG(DEBUG, ...) messages in rte_eal_cpu_init() are printed
even when the log level on the command line was set to INFO or lower.

The problem is the rte_eal_cpu_init() routine was called before
the command line args are scanned. Setting --log-level=7 now
correctly does not print the messages from the rte_eal_cpu_init() routine.

Signed-off-by: Keith Wiles <keith.wiles@intel.com>
Acked-by: David Marchand <david.marchand@6wind.com>
lib/librte_eal/bsdapp/eal/eal.c
lib/librte_eal/linuxapp/eal/eal.c

index 7bd392f..5e25469 100644 (file)
@@ -306,6 +306,38 @@ eal_get_hugepage_mem_size(void)
        return (size < SIZE_MAX) ? (size_t)(size) : SIZE_MAX;
 }
 
+/* Parse the arguments for --log-level only */
+static void
+eal_log_level_parse(int argc, char **argv)
+{
+       int opt;
+       char **argvopt;
+       int option_index;
+
+       argvopt = argv;
+
+       eal_reset_internal_config(&internal_config);
+
+       while ((opt = getopt_long(argc, argvopt, eal_short_options,
+                                 eal_long_options, &option_index)) != EOF) {
+
+               int ret;
+
+               /* getopt is not happy, stop right now */
+               if (opt == '?')
+                       break;
+
+               ret = (opt == OPT_LOG_LEVEL_NUM) ?
+                       eal_parse_common_option(opt, optarg, &internal_config) : 0;
+
+               /* common parser is not happy */
+               if (ret < 0)
+                       break;
+       }
+
+       optind = 0; /* reset getopt lib */
+}
+
 /* Parse the argument given in the command line of the application */
 static int
 eal_parse_args(int argc, char **argv)
@@ -317,8 +349,6 @@ eal_parse_args(int argc, char **argv)
 
        argvopt = argv;
 
-       eal_reset_internal_config(&internal_config);
-
        while ((opt = getopt_long(argc, argvopt, eal_short_options,
                                  eal_long_options, &option_index)) != EOF) {
 
@@ -447,6 +477,11 @@ rte_eal_init(int argc, char **argv)
        if (rte_eal_log_early_init() < 0)
                rte_panic("Cannot init early logs\n");
 
+       eal_log_level_parse(argc, argv);
+
+       /* set log level as early as possible */
+       rte_set_log_level(internal_config.log_level);
+
        if (rte_eal_cpu_init() < 0)
                rte_panic("Cannot detect lcores\n");
 
@@ -454,9 +489,6 @@ rte_eal_init(int argc, char **argv)
        if (fctret < 0)
                exit(1);
 
-       /* set log level as early as possible */
-       rte_set_log_level(internal_config.log_level);
-
        if (internal_config.no_hugetlbfs == 0 &&
                        internal_config.process_type != RTE_PROC_SECONDARY &&
                        eal_hugepage_info_init() < 0)
index bd770cf..926219b 100644 (file)
@@ -499,6 +499,38 @@ eal_get_hugepage_mem_size(void)
        return (size < SIZE_MAX) ? (size_t)(size) : SIZE_MAX;
 }
 
+/* Parse the arguments for --log-level only */
+static void
+eal_log_level_parse(int argc, char **argv)
+{
+       int opt;
+       char **argvopt;
+       int option_index;
+
+       argvopt = argv;
+
+       eal_reset_internal_config(&internal_config);
+
+       while ((opt = getopt_long(argc, argvopt, eal_short_options,
+                                 eal_long_options, &option_index)) != EOF) {
+
+               int ret;
+
+               /* getopt is not happy, stop right now */
+               if (opt == '?')
+                       break;
+
+               ret = (opt == OPT_LOG_LEVEL_NUM) ?
+                       eal_parse_common_option(opt, optarg, &internal_config) : 0;
+
+               /* common parser is not happy */
+               if (ret < 0)
+                       break;
+       }
+
+       optind = 0; /* reset getopt lib */
+}
+
 /* Parse the argument given in the command line of the application */
 static int
 eal_parse_args(int argc, char **argv)
@@ -511,8 +543,6 @@ eal_parse_args(int argc, char **argv)
 
        argvopt = argv;
 
-       eal_reset_internal_config(&internal_config);
-
        while ((opt = getopt_long(argc, argvopt, eal_short_options,
                                  eal_long_options, &option_index)) != EOF) {
 
@@ -717,6 +747,11 @@ rte_eal_init(int argc, char **argv)
        if (rte_eal_log_early_init() < 0)
                rte_panic("Cannot init early logs\n");
 
+       eal_log_level_parse(argc, argv);
+
+       /* set log level as early as possible */
+       rte_set_log_level(internal_config.log_level);
+
        if (rte_eal_cpu_init() < 0)
                rte_panic("Cannot detect lcores\n");
 
@@ -724,9 +759,6 @@ rte_eal_init(int argc, char **argv)
        if (fctret < 0)
                exit(1);
 
-       /* set log level as early as possible */
-       rte_set_log_level(internal_config.log_level);
-
        if (internal_config.no_hugetlbfs == 0 &&
                        internal_config.process_type != RTE_PROC_SECONDARY &&
                        internal_config.xen_dom0_support == 0 &&