Loading shared libraries should be done at the very start of eal init so that
the code statically built in dpdk and the code loaded from shared objects is
handled (almost) the same way wrt to call to rte_eal_init().
The only thing that must be done before is filling the solib_list which is done
by eal_parse_args().

Signed-off-by: David Marchand <david.marchand at 6wind.com>
---
 lib/librte_eal/linuxapp/eal/eal.c |   14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/lib/librte_eal/linuxapp/eal/eal.c 
b/lib/librte_eal/linuxapp/eal/eal.c
index 16f9e7c..c1c103d 100644
--- a/lib/librte_eal/linuxapp/eal/eal.c
+++ b/lib/librte_eal/linuxapp/eal/eal.c
@@ -725,6 +725,13 @@ rte_eal_init(int argc, char **argv)
        if (fctret < 0)
                exit(1);

+       TAILQ_FOREACH(solib, &solib_list, next) {
+               RTE_LOG(INFO, EAL, "open shared lib %s\n", solib->name);
+               solib->lib_handle = dlopen(solib->name, RTLD_NOW);
+               if (solib->lib_handle == NULL)
+                       RTE_LOG(WARNING, EAL, "%s\n", dlerror());
+       }
+
        /* set log level as early as possible */
        rte_set_log_level(internal_config.log_level);

@@ -797,13 +804,6 @@ rte_eal_init(int argc, char **argv)

        rte_eal_mcfg_complete();

-       TAILQ_FOREACH(solib, &solib_list, next) {
-               RTE_LOG(INFO, EAL, "open shared lib %s\n", solib->name);
-               solib->lib_handle = dlopen(solib->name, RTLD_NOW);
-               if (solib->lib_handle == NULL)
-                       RTE_LOG(WARNING, EAL, "%s\n", dlerror());
-       }
-
        eal_thread_init_master(rte_config.master_lcore);

        ret = eal_thread_dump_affinity(cpuset, RTE_CPU_AFFINITY_STR_LEN);
-- 
1.7.10.4

Reply via email to