X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Flibrte_eal%2Fwindows%2Feal.c;h=1e5f6576f046e88c21c1e7db0684f55c1520299a;hb=27ff8384deaca2f7727d0cedf2053aa13fbae1e2;hp=addac62ae5cf5f4960223d7a4e1260f1530b51ef;hpb=2ab55f78d140474e18e523180a2d2df2aada72b2;p=dpdk.git diff --git a/lib/librte_eal/windows/eal.c b/lib/librte_eal/windows/eal.c index addac62ae5..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" @@ -66,6 +67,12 @@ eal_proc_type_detect(void) return ptype; } +bool +rte_mp_disable(void) +{ + return true; +} + /* display usage */ static void eal_usage(const char *prgname) @@ -257,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); @@ -278,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)) { @@ -332,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) { @@ -348,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"); @@ -368,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; }