X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Flibrte_eal%2Fwindows%2Feal.c;h=1e5f6576f046e88c21c1e7db0684f55c1520299a;hb=27ff8384deaca2f7727d0cedf2053aa13fbae1e2;hp=e50601dd36f03e27a9eea12fa51b00ce919713d9;hpb=d2fd16c8b0032c70fcbeea7c25e900d64d4826b6;p=dpdk.git diff --git a/lib/librte_eal/windows/eal.c b/lib/librte_eal/windows/eal.c index e50601dd36..1e5f6576f0 100644 --- a/lib/librte_eal/windows/eal.c +++ b/lib/librte_eal/windows/eal.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include "eal_hugepages.h" @@ -263,6 +264,7 @@ rte_eal_init(int argc, char **argv) const struct rte_config *config = rte_eal_get_configuration(); struct internal_config *internal_conf = eal_get_internal_configuration(); + int ret; rte_eal_log_init(NULL, 0); @@ -284,11 +286,17 @@ rte_eal_init(int argc, char **argv) if (fctret < 0) exit(1); + if (eal_option_device_parse()) { + rte_errno = ENODEV; + return -1; + } + /* Prevent creation of shared memory files. */ if (internal_conf->in_memory == 0) { RTE_LOG(WARNING, EAL, "Multi-process support is requested, " "but not available.\n"); internal_conf->in_memory = 1; + internal_conf->no_shconf = 1; } if (!internal_conf->no_hugetlbfs && (eal_hugepage_info_init() < 0)) { @@ -338,14 +346,19 @@ rte_eal_init(int argc, char **argv) return -1; } + if (rte_eal_intr_init() < 0) { + rte_eal_init_alert("Cannot init interrupt-handling thread"); + return -1; + } + if (rte_eal_timer_init() < 0) { rte_eal_init_alert("Cannot init TSC timer"); rte_errno = EFAULT; return -1; } - __rte_thread_init(config->master_lcore, - &lcore_config[config->master_lcore].cpuset); + __rte_thread_init(config->main_lcore, + &lcore_config[config->main_lcore].cpuset); bscan = rte_bus_scan(); if (bscan < 0) { @@ -354,16 +367,16 @@ rte_eal_init(int argc, char **argv) return -1; } - RTE_LCORE_FOREACH_SLAVE(i) { + RTE_LCORE_FOREACH_WORKER(i) { /* - * create communication pipes between master thread + * create communication pipes between main thread * and children */ - if (_pipe(lcore_config[i].pipe_master2slave, + if (_pipe(lcore_config[i].pipe_main2worker, sizeof(char), _O_BINARY) < 0) rte_panic("Cannot create pipe\n"); - if (_pipe(lcore_config[i].pipe_slave2master, + if (_pipe(lcore_config[i].pipe_worker2main, sizeof(char), _O_BINARY) < 0) rte_panic("Cannot create pipe\n"); @@ -374,11 +387,25 @@ rte_eal_init(int argc, char **argv) rte_panic("Cannot create thread\n"); } + /* Initialize services so drivers can register services during probe. */ + ret = rte_service_init(); + if (ret) { + rte_eal_init_alert("rte_service_init() failed"); + rte_errno = -ret; + return -1; + } + + if (rte_bus_probe()) { + rte_eal_init_alert("Cannot probe devices"); + rte_errno = ENOTSUP; + return -1; + } + /* - * Launch a dummy function on all slave lcores, so that master lcore + * Launch a dummy function on all worker lcores, so that main lcore * knows they are all ready when this function returns. */ - rte_eal_mp_remote_launch(sync_func, NULL, SKIP_MASTER); + rte_eal_mp_remote_launch(sync_func, NULL, SKIP_MAIN); rte_eal_mp_wait_lcore(); return fctret; }