[dpdk-dev] [PATCH 3/3] app/testpmd: changed example to parse options from cfg file

Wu, Jingjing jingjing.wu at intel.com
Tue Jun 20 04:13:37 CEST 2017


> +
> +#ifdef RTE_LIBRTE_CFGFILE
> +/* Load config file path from command line */ static char *
> +cfgfile_load_path(int argc, char **argv) {
> +	int i;
> +
> +	for (i = 0; i < argc; i++) {
> +		if (!strcmp("--cfgfile-path", argv[i])) {
> +			if (i < argc)
> +				return strdup(argv[i+1]);
> +		}
> +	}
> +	return 0;
> +}
> +#endif
> +
It is a little confused. Is the cfgfile-path is application's argument or EAL's?
Where is it supposed to be located?

>  int
>  main(int argc, char** argv)
>  {
>  	int  diag;
>  	uint8_t port_id;
> +	struct rte_cfgfile *cfg = NULL;
> +	char *config_file = NULL;
> 
>  	signal(SIGINT, signal_handler);
>  	signal(SIGTERM, signal_handler);
> 
> +#ifdef RTE_LIBRTE_CFGFILE
> +	/* load --cfgfile-path argument from argv */
> +	config_file = cfgfile_load_path(argc, argv);
> +
> +	if (config_file) {
> +		printf("Info: found cfgfile-path \"%s\"\n", config_file);
> +	} else {
> +		printf("Info: not found cfgfile-path parameter "
> +				"(searching for cfgfile "
> +				"in default directory)\n");
> +		config_file = strdup("config.ini");
> +	}
> +	cfg = rte_cfgfile_load(config_file, CFG_FLAG_EMPTY_VALUES);
> +	if (cfg == NULL)
> +		printf("Info: Valid cfgfile not found\n");
> +	rte_eal_configure(cfg);
> +#endif
> +
Does it mean if RTE_LIBRTE_CFGFILE is defined, then the arguments are passed by
Cfgfile, if no cfgfile will use config.ini by default? How about the legacy command lines?
I think even cfgfile is good, we still need to keep the command line way.

>  	diag = rte_eal_init(argc, argv);
>  	if (diag < 0)
>  		rte_panic("Cannot init EAL\n");
> @@ -2289,7 +2329,16 @@ uint8_t port_is_bonding_slave(portid_t slave_pid)
>  	argc -= diag;
>  	argv += diag;
>  	if (argc > 1)
> -		launch_args_parse(argc, argv);
> +		launch_args_parse(argc, argv, cfg);
> +

The argc and argv have been overwritten by cfgfile, right? Does it make sense to
Pass cfg to  launch_args_parse?


And you also need to update the testpmd doc to describe this new use.

Thanks
Jingjing


More information about the dev mailing list