[PATCH v23 04/15] eal: make eal_log_level_parse common

fengchengwen fengchengwen at huawei.com
Wed Sep 18 09:18:04 CEST 2024


On 2024/9/18 12:56, Stephen Hemminger wrote:
> The code to parse for log-level option should be same on
> all OS variants.
> 
> Signed-off-by: Stephen Hemminger <stephen at networkplumber.org>
> Acked-by: Tyler Retzlaff <roretzla at linux.microsoft.com>
> Acked-by: Morten Brørup <mb at smartsharesystems.com>
> ---
>  lib/eal/common/eal_common_options.c | 45 +++++++++++++++++++++++++++++
>  lib/eal/common/eal_options.h        |  1 +
>  lib/eal/freebsd/eal.c               | 42 ---------------------------
>  lib/eal/linux/eal.c                 | 39 -------------------------
>  lib/eal/windows/eal.c               | 35 ----------------------
>  5 files changed, 46 insertions(+), 116 deletions(-)
> 
> diff --git a/lib/eal/common/eal_common_options.c b/lib/eal/common/eal_common_options.c
> index f1a5e329a5..b0ceeef632 100644
> --- a/lib/eal/common/eal_common_options.c
> +++ b/lib/eal/common/eal_common_options.c
> @@ -1640,6 +1640,51 @@ eal_parse_huge_unlink(const char *arg, struct hugepage_file_discipline *out)
>  	return -1;
>  }
>  
> +/* Parse the all arguments looking for log related ones */
> +int
> +eal_log_level_parse(int argc, char * const argv[])
> +{
> +	struct internal_config *internal_conf = eal_get_internal_configuration();
> +	int option_index, opt;
> +	const int old_optind = optind;
> +	const int old_optopt = optopt;
> +	const int old_opterr = opterr;
> +	char *old_optarg = optarg;
> +#ifdef RTE_EXEC_ENV_FREEBSD
> +	const int old_optreset = optreset;
> +	optreset = 1;
> +#endif
> +
> +	optind = 1;
> +	opterr = 0;
> +
> +	while ((opt = getopt_long(argc, argv, eal_short_options,
> +				  eal_long_options, &option_index)) != EOF) {
> +
> +		switch (opt) {
> +		case OPT_LOG_LEVEL_NUM:
> +			if (eal_parse_common_option(opt, optarg, internal_conf) < 0)
> +				return -1;
> +			break;
> +		case '?':
> +			/* getopt is not happy, stop right now */
> +			goto out;

no need goto, could use break

> +		default:
> +			continue;
> +		}
> +	}
> +out:
> +	/* restore getopt lib */
> +	optind = old_optind;
> +	optopt = old_optopt;
> +	optarg = old_optarg;
> +	opterr = old_opterr;
> +#ifdef RTE_EXEC_ENV_FREEBSD
> +	optreset = old_optreset;
> +#endif
> +	return 0;
> +}
> +

...


More information about the dev mailing list