From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id A02A9316B for ; Fri, 14 Apr 2017 07:33:53 +0200 (CEST) Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 13 Apr 2017 22:33:51 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.37,197,1488873600"; d="scan'208";a="88892053" Received: from shwdeisgchi083.ccr.corp.intel.com (HELO [10.239.67.171]) ([10.239.67.171]) by fmsmga005.fm.intel.com with ESMTP; 13 Apr 2017 22:33:50 -0700 To: Olivier Matz , dev@dpdk.org Cc: david.marchand@6wind.com, bruce.richardson@intel.com, thomas.monjalon@6wind.com, keith.wiles@intel.com, stephen@networkplumber.org, "De Lara Guarch, Pablo" References: <20170329155323.4760-1-olivier.matz@6wind.com> <20170404164040.24132-1-olivier.matz@6wind.com> <20170404164040.24132-5-olivier.matz@6wind.com> From: "Tan, Jianfeng" Message-ID: <88ff6283-4b3f-f3a7-0d44-9be8fe5441c1@intel.com> Date: Fri, 14 Apr 2017 13:33:49 +0800 User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.0 MIME-Version: 1.0 In-Reply-To: <20170404164040.24132-5-olivier.matz@6wind.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-US Subject: Re: [dpdk-dev] [PATCH v3 4/8] eal: change specific log levels at startup X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 14 Apr 2017 05:33:54 -0000 Hi Olivier, If I understand it correctly, this patch is to shift log level setting earlier. But we did not remove the one in eal_parse_common_option(). So we can see this parameter will be analyzed twice. Does it make sense to remove analysis of log level in eal_parse_common_option()? Thanks, Jianfeng On 4/5/2017 12:40 AM, Olivier Matz wrote: > Example of use: > ./app/test-pmd --log-level='pmd\.i40e.*,8' > > This enables debug logs for all dynamic logs whose type starts with > 'pmd.i40e'. > > Signed-off-by: Olivier Matz > --- > lib/librte_eal/bsdapp/eal/eal.c | 4 +-- > lib/librte_eal/common/eal_common_options.c | 49 +++++++++++++++++++++++------- > lib/librte_eal/linuxapp/eal/eal.c | 4 +-- > 3 files changed, 40 insertions(+), 17 deletions(-) > > diff --git a/lib/librte_eal/bsdapp/eal/eal.c b/lib/librte_eal/bsdapp/eal/eal.c > index 4ee9c66fe..fae6c7e0a 100644 > --- a/lib/librte_eal/bsdapp/eal/eal.c > +++ b/lib/librte_eal/bsdapp/eal/eal.c > @@ -519,10 +519,8 @@ rte_eal_init(int argc, char **argv) > > thread_id = pthread_self(); > > - eal_log_level_parse(argc, argv); > - > /* set log level as early as possible */ > - rte_set_log_level(internal_config.log_level); > + eal_log_level_parse(argc, argv); > > if (rte_eal_cpu_init() < 0) { > rte_eal_init_alert("Cannot detect lcores."); > diff --git a/lib/librte_eal/common/eal_common_options.c b/lib/librte_eal/common/eal_common_options.c > index f36bc5568..606695a7f 100644 > --- a/lib/librte_eal/common/eal_common_options.c > +++ b/lib/librte_eal/common/eal_common_options.c > @@ -739,25 +739,53 @@ eal_parse_syslog(const char *facility, struct internal_config *conf) > } > > static int > -eal_parse_log_level(const char *level, uint32_t *log_level) > +eal_parse_log_level(const char *arg, struct internal_config *conf) > { > - char *end; > + char *end, *str, *type, *level; > unsigned long tmp; > > + str = strdup(arg); > + if (str == NULL) > + return -1; > + > + if (strchr(str, ',') == NULL) { > + type = NULL; > + level = str; > + } else { > + type = strsep(&str, ","); > + level = strsep(&str, ","); > + } > + > errno = 0; > tmp = strtoul(level, &end, 0); > > /* check for errors */ > if ((errno != 0) || (level[0] == '\0') || > - end == NULL || (*end != '\0')) > - return -1; > + end == NULL || (*end != '\0')) > + goto fail; > > /* log_level is a uint32_t */ > if (tmp >= UINT32_MAX) > - return -1; > + goto fail; > + > + printf("set log level %s,%lu\n", > + type, tmp); > + > + if (type == NULL) { > + conf->log_level = tmp; > + rte_set_log_level(tmp); > + } else if (rte_log_set_level_regexp(type, tmp) < 0) { > + printf("cannot set log level %s,%lu\n", > + type, tmp); > + goto fail; > + } > > - *log_level = tmp; > + free(str); > return 0; > + > +fail: > + free(str); > + return -1; > } > > static enum rte_proc_type_t > @@ -898,15 +926,12 @@ eal_parse_common_option(int opt, const char *optarg, > break; > > case OPT_LOG_LEVEL_NUM: { > - uint32_t log; > - > - if (eal_parse_log_level(optarg, &log) < 0) { > + if (eal_parse_log_level(optarg, conf) < 0) { > RTE_LOG(ERR, EAL, > "invalid parameters for --" > OPT_LOG_LEVEL "\n"); > return -1; > } > - conf->log_level = log; > break; > } > case OPT_LCORES_NUM: > @@ -1057,7 +1082,9 @@ eal_common_usage(void) > " --"OPT_VMWARE_TSC_MAP" Use VMware TSC map instead of native RDTSC\n" > " --"OPT_PROC_TYPE" Type of this process (primary|secondary|auto)\n" > " --"OPT_SYSLOG" Set syslog facility\n" > - " --"OPT_LOG_LEVEL" Set default log level\n" > + " --"OPT_LOG_LEVEL"= Set global log level\n" > + " --"OPT_LOG_LEVEL"=,\n" > + " Set specific log level\n" > " -v Display version information on startup\n" > " -h, --help This help\n" > "\nEAL options for DEBUG use only:\n" > diff --git a/lib/librte_eal/linuxapp/eal/eal.c b/lib/librte_eal/linuxapp/eal/eal.c > index f0ded185b..d98d56d2f 100644 > --- a/lib/librte_eal/linuxapp/eal/eal.c > +++ b/lib/librte_eal/linuxapp/eal/eal.c > @@ -776,10 +776,8 @@ rte_eal_init(int argc, char **argv) > > thread_id = pthread_self(); > > - eal_log_level_parse(argc, argv); > - > /* set log level as early as possible */ > - rte_set_log_level(internal_config.log_level); > + eal_log_level_parse(argc, argv); > > if (rte_eal_cpu_init() < 0) { > rte_eal_init_alert("Cannot detect lcores.");