doc: add Meson coding style to contributors guide
[dpdk.git] / lib / librte_eal / windows / eal.c
index 141f22a..28c787c 100644 (file)
@@ -2,6 +2,8 @@
  * Copyright(c) 2019 Intel Corporation
  */
 
+#include <stdarg.h>
+
 #include <fcntl.h>
 #include <io.h>
 #include <share.h>
@@ -22,6 +24,7 @@
 
 #include "eal_hugepages.h"
 #include "eal_trace.h"
+#include "eal_log.h"
 #include "eal_windows.h"
 
 #define MEMSIZE_IF_NO_HUGE_PAGE (64ULL * 1024ULL * 1024ULL)
@@ -149,6 +152,10 @@ eal_parse_args(int argc, char **argv)
                        return -1;
                }
 
+               /* eal_log_level_parse() already handled this option */
+               if (opt == OPT_LOG_LEVEL_NUM)
+                       continue;
+
                ret = eal_parse_common_option(opt, optarg, internal_conf);
                /* common parser is not happy */
                if (ret < 0) {
@@ -251,7 +258,8 @@ rte_eal_cleanup(void)
 {
        struct internal_config *internal_conf =
                eal_get_internal_configuration();
-
+       /* after this point, any DPDK pointers will become dangling */
+       rte_eal_memory_detach();
        eal_cleanup_config(internal_conf);
        return 0;
 }
@@ -264,8 +272,9 @@ 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);
+       eal_log_init(NULL, 0);
 
        eal_log_level_parse(argc, argv);
 
@@ -295,6 +304,7 @@ rte_eal_init(int argc, char **argv)
                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)) {
@@ -355,8 +365,8 @@ rte_eal_init(int argc, char **argv)
                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) {
@@ -365,16 +375,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");
 
@@ -386,9 +396,10 @@ rte_eal_init(int argc, char **argv)
        }
 
        /* Initialize services so drivers can register services during probe. */
-       if (rte_service_init()) {
+       ret = rte_service_init();
+       if (ret) {
                rte_eal_init_alert("rte_service_init() failed");
-               rte_errno = ENOEXEC;
+               rte_errno = -ret;
                return -1;
        }
 
@@ -399,14 +410,42 @@ rte_eal_init(int argc, char **argv)
        }
 
        /*
-        * 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;
 }
 
+/* Don't use MinGW asprintf() to have identical code with all toolchains. */
+int
+eal_asprintf(char **buffer, const char *format, ...)
+{
+       int size, ret;
+       va_list arg;
+
+       va_start(arg, format);
+       size = vsnprintf(NULL, 0, format, arg);
+       va_end(arg);
+       if (size < 0)
+               return -1;
+       size++;
+
+       *buffer = malloc(size);
+       if (*buffer == NULL)
+               return -1;
+
+       va_start(arg, format);
+       ret = vsnprintf(*buffer, size, format, arg);
+       va_end(arg);
+       if (ret != size - 1) {
+               free(*buffer);
+               return -1;
+       }
+       return ret;
+}
+
 int
 rte_vfio_container_dma_map(__rte_unused int container_fd,
                        __rte_unused uint64_t vaddr,