git.droids-corp.org
/
dpdk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
eal: move CPU flags check from constructor to init
[dpdk.git]
/
lib
/
librte_eal
/
bsdapp
/
eal
/
eal.c
diff --git
a/lib/librte_eal/bsdapp/eal/eal.c
b/lib/librte_eal/bsdapp/eal/eal.c
index
1b6f705
..
c4b22af
100644
(file)
--- a/
lib/librte_eal/bsdapp/eal/eal.c
+++ b/
lib/librte_eal/bsdapp/eal/eal.c
@@
-1,7
+1,7
@@
/*-
* BSD LICENSE
*
/*-
* BSD LICENSE
*
- * Copyright(c) 2010-201
4
Intel Corporation. All rights reserved.
+ * Copyright(c) 2010-201
6
Intel Corporation. All rights reserved.
* Copyright(c) 2014 6WIND S.A.
* All rights reserved.
*
* Copyright(c) 2014 6WIND S.A.
* All rights reserved.
*
@@
-312,8
+312,14
@@
eal_log_level_parse(int argc, char **argv)
int opt;
char **argvopt;
int option_index;
int opt;
char **argvopt;
int option_index;
+ const int old_optind = optind;
+ const int old_optopt = optopt;
+ const int old_optreset = optreset;
+ char * const old_optarg = optarg;
argvopt = argv;
argvopt = argv;
+ optind = 1;
+ optreset = 1;
eal_reset_internal_config(&internal_config);
eal_reset_internal_config(&internal_config);
@@
-334,7
+340,11
@@
eal_log_level_parse(int argc, char **argv)
break;
}
break;
}
- optind = 0; /* reset getopt lib */
+ /* restore getopt lib */
+ optind = old_optind;
+ optopt = old_optopt;
+ optreset = old_optreset;
+ optarg = old_optarg;
}
/* Parse the argument given in the command line of the application */
}
/* Parse the argument given in the command line of the application */
@@
-345,25
+355,31
@@
eal_parse_args(int argc, char **argv)
char **argvopt;
int option_index;
char *prgname = argv[0];
char **argvopt;
int option_index;
char *prgname = argv[0];
+ const int old_optind = optind;
+ const int old_optopt = optopt;
+ const int old_optreset = optreset;
+ char * const old_optarg = optarg;
argvopt = argv;
argvopt = argv;
+ optind = 1;
+ optreset = 1;
while ((opt = getopt_long(argc, argvopt, eal_short_options,
eal_long_options, &option_index)) != EOF) {
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 == '?') {
eal_usage(prgname);
/* getopt is not happy, stop right now */
if (opt == '?') {
eal_usage(prgname);
- return -1;
+ ret = -1;
+ goto out;
}
ret = eal_parse_common_option(opt, optarg, &internal_config);
/* common parser is not happy */
if (ret < 0) {
eal_usage(prgname);
}
ret = eal_parse_common_option(opt, optarg, &internal_config);
/* common parser is not happy */
if (ret < 0) {
eal_usage(prgname);
- return -1;
+ ret = -1;
+ goto out;
}
/* common parser handled this option */
if (ret == 0)
}
/* common parser handled this option */
if (ret == 0)
@@
-387,23
+403,34
@@
eal_parse_args(int argc, char **argv)
"on FreeBSD\n", opt);
}
eal_usage(prgname);
"on FreeBSD\n", opt);
}
eal_usage(prgname);
- return -1;
+ ret = -1;
+ goto out;
}
}
}
}
- if (eal_adjust_config(&internal_config) != 0)
- return -1;
+ if (eal_adjust_config(&internal_config) != 0) {
+ ret = -1;
+ goto out;
+ }
/* sanity checks */
if (eal_check_common_options(&internal_config) != 0) {
eal_usage(prgname);
/* sanity checks */
if (eal_check_common_options(&internal_config) != 0) {
eal_usage(prgname);
- return -1;
+ ret = -1;
+ goto out;
}
if (optind >= 0)
argv[optind-1] = prgname;
ret = optind-1;
}
if (optind >= 0)
argv[optind-1] = prgname;
ret = optind-1;
- optind = 0; /* reset getopt lib */
+
+out:
+ /* restore getopt lib */
+ optind = old_optind;
+ optopt = old_optopt;
+ optreset = old_optreset;
+ optarg = old_optarg;
+
return ret;
}
return ret;
}
@@
-467,6
+494,10
@@
rte_eal_init(int argc, char **argv)
pthread_t thread_id;
static rte_atomic32_t run_once = RTE_ATOMIC32_INIT(0);
char cpuset[RTE_CPU_AFFINITY_STR_LEN];
pthread_t thread_id;
static rte_atomic32_t run_once = RTE_ATOMIC32_INIT(0);
char cpuset[RTE_CPU_AFFINITY_STR_LEN];
+ char thread_name[RTE_MAX_THREAD_NAME_LEN];
+
+ /* checks if the machine is adequate */
+ rte_cpu_check_supported();
if (!rte_atomic32_test_and_set(&run_once))
return -1;
if (!rte_atomic32_test_and_set(&run_once))
return -1;
@@
-541,7
+572,8
@@
rte_eal_init(int argc, char **argv)
eal_check_mem_on_local_socket();
eal_check_mem_on_local_socket();
- rte_eal_mcfg_complete();
+ if (eal_plugins_init() < 0)
+ rte_panic("Cannot init plugins\n");
eal_thread_init_master(rte_config.master_lcore);
eal_thread_init_master(rte_config.master_lcore);
@@
-572,6
+604,11
@@
rte_eal_init(int argc, char **argv)
eal_thread_loop, NULL);
if (ret != 0)
rte_panic("Cannot create thread\n");
eal_thread_loop, NULL);
if (ret != 0)
rte_panic("Cannot create thread\n");
+
+ /* Set thread_name for aid in debugging. */
+ snprintf(thread_name, RTE_MAX_THREAD_NAME_LEN,
+ "lcore-slave-%d", i);
+ rte_thread_setname(lcore_config[i].thread_id, thread_name);
}
/*
}
/*
@@
-585,6
+622,8
@@
rte_eal_init(int argc, char **argv)
if (rte_eal_pci_probe())
rte_panic("Cannot probe PCI\n");
if (rte_eal_pci_probe())
rte_panic("Cannot probe PCI\n");
+ rte_eal_mcfg_complete();
+
return fctret;
}
return fctret;
}