From: Graham Whyte <grwh...@microsoft.com>

reinitialize the solib link list and clean the globals holding
state for parsing.

Signed-off-by: Sinan Kaya <ok...@kernel.org>
Signed-off-by: Graham Whyte <grwh...@microsoft.com>
---
 lib/eal/common/eal_common_options.c | 7 +++++++
 lib/eal/linux/eal.c                 | 4 +++-
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/lib/eal/common/eal_common_options.c 
b/lib/eal/common/eal_common_options.c
index 062f1d8d9c..7043b6e2fd 100644
--- a/lib/eal/common/eal_common_options.c
+++ b/lib/eal/common/eal_common_options.c
@@ -1981,6 +1981,13 @@ compute_ctrl_threads_cpuset(struct internal_config 
*internal_cfg)
                memcpy(cpuset, &lcore_config[rte_get_main_lcore()].cpuset,
                        sizeof(*cpuset));
        }
+
+       /* Reinitialize solib_list */
+       TAILQ_INIT(&solib_list);
+
+       main_lcore_parsed = 0;
+       mem_parsed = 0;
+       core_parsed = 0;
 }
 
 int
diff --git a/lib/eal/linux/eal.c b/lib/eal/linux/eal.c
index c6efd92014..650fb5f5a9 100644
--- a/lib/eal/linux/eal.c
+++ b/lib/eal/linux/eal.c
@@ -79,6 +79,8 @@ struct lcore_config lcore_config[RTE_MAX_LCORE];
 int rte_cycles_vmware_tsc_map;
 
 
+static uint32_t run_once;
+
 int
 eal_clean_runtime_dir(void)
 {
@@ -505,6 +507,7 @@ eal_parse_socket_arg(char *strval, volatile uint64_t 
*socket_arg)
                socket_arg[i] = val;
        }
 
+       __atomic_store_n(&run_once, 0, __ATOMIC_RELAXED);
        return 0;
 }
 
@@ -967,7 +970,6 @@ int
 rte_eal_init(int argc, char **argv)
 {
        int i, fctret, ret;
-       static uint32_t run_once;
        uint32_t has_run = 0;
        char cpuset[RTE_CPU_AFFINITY_STR_LEN];
        char thread_name[RTE_MAX_THREAD_NAME_LEN];
-- 
2.25.1

Reply via email to