}
/* Detect if we are a primary or a secondary process */
-static enum rte_proc_type_t
+enum rte_proc_type_t
eal_proc_type_detect(void)
{
enum rte_proc_type_t ptype = RTE_PROC_PRIMARY;
static void
rte_config_init(void)
{
- rte_config.process_type = (internal_config.process_type == RTE_PROC_AUTO) ?
- eal_proc_type_detect() : /* for auto, detect the type */
- internal_config.process_type; /* otherwise use what's already set */
+ rte_config.process_type = internal_config.process_type;
switch (rte_config.process_type){
case RTE_PROC_PRIMARY:
static int
eal_parse_args(int argc, char **argv)
{
- int opt, ret, i;
+ int opt, ret;
char **argvopt;
int option_index;
char *prgname = argv[0];
int ret;
/* getopt is not happy, stop right now */
- if (opt == '?')
+ if (opt == '?') {
+ eal_usage(prgname);
return -1;
+ }
ret = eal_parse_common_option(opt, optarg, &internal_config);
/* common parser is not happy */
continue;
switch (opt) {
+ case 'h':
+ eal_usage(prgname);
+ exit(EXIT_SUCCESS);
default:
if (opt < OPT_LONG_MIN_NUM && isprint(opt)) {
RTE_LOG(ERR, EAL, "Option %c is not supported "
}
}
- if (internal_config.process_type == RTE_PROC_AUTO)
- internal_config.process_type = eal_proc_type_detect();
+ if (eal_adjust_config(&internal_config) != 0)
+ return -1;
/* sanity checks */
if (eal_check_common_options(&internal_config) != 0) {
if (optind >= 0)
argv[optind-1] = prgname;
-
- /* if no memory amounts were requested, this will result in 0 and
- * will be overriden later, right after eal_hugepage_info_init() */
- for (i = 0; i < RTE_MAX_NUMA_NODES; i++)
- internal_config.memory += internal_config.socket_mem[i];
-
ret = optind-1;
optind = 0; /* reset getopt lib */
return ret;
int i, fctret, ret;
pthread_t thread_id;
static rte_atomic32_t run_once = RTE_ATOMIC32_INIT(0);
+ char cpuset[RTE_CPU_AFFINITY_STR_LEN];
if (!rte_atomic32_test_and_set(&run_once))
return -1;
if (rte_eal_pci_init() < 0)
rte_panic("Cannot init PCI\n");
- RTE_LOG(DEBUG, EAL, "Master core %u is ready (tid=%p)\n",
- rte_config.master_lcore, thread_id);
-
eal_check_mem_on_local_socket();
rte_eal_mcfg_complete();
+ eal_thread_init_master(rte_config.master_lcore);
+
+ ret = eal_thread_dump_affinity(cpuset, RTE_CPU_AFFINITY_STR_LEN);
+
+ RTE_LOG(DEBUG, EAL, "Master lcore %u is ready (tid=%p;cpuset=[%s%s])\n",
+ rte_config.master_lcore, thread_id, cpuset,
+ ret == 0 ? "" : "...");
+
if (rte_eal_dev_init() < 0)
rte_panic("Cannot init pmd devices\n");
rte_panic("Cannot create thread\n");
}
- eal_thread_init_master(rte_config.master_lcore);
-
/*
* Launch a dummy function on all slave lcores, so that master lcore
* knows they are all ready when this function returns.