[v5,01/10] eal: cleanup plugins data
Checks
Commit Message
From: Stephen Hemminger <stephen@networkplumber.org>
When rte_eal_cleanup is called walk through the list of shared
objects loaded, and close them and free the data structure.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: Sinan Kaya <okaya@kernel.org>
---
lib/eal/common/eal_common_options.c | 14 ++++++++++++++
lib/eal/common/eal_options.h | 1 +
lib/eal/linux/eal.c | 2 ++
3 files changed, 17 insertions(+)
@@ -244,6 +244,20 @@ eal_save_args(int argc, char **argv)
}
#endif
+void
+eal_plugins_cleanup(void)
+{
+#ifndef RTE_EXEC_ENV_WINDOWS
+ struct shared_driver *solib, *tmp;
+
+ RTE_TAILQ_FOREACH_SAFE(solib, &solib_list, next, tmp) {
+ if (solib->lib_handle)
+ dlclose(solib->lib_handle);
+ free(solib);
+ }
+#endif
+}
+
static int
eal_option_device_add(enum rte_devtype type, const char *optarg)
{
@@ -105,6 +105,7 @@ int eal_check_common_options(struct internal_config *internal_cfg);
void eal_common_usage(void);
enum rte_proc_type_t eal_proc_type_detect(void);
int eal_plugins_init(void);
+void eal_plugins_cleanup(void);
int eal_save_args(int argc, char **argv);
int handle_eal_info_request(const char *cmd, const char *params __rte_unused,
struct rte_tel_data *d);
@@ -1398,6 +1398,8 @@ rte_eal_cleanup(void)
eal_trace_fini();
eal_mp_dev_hotplug_cleanup();
rte_eal_alarm_cleanup();
+ eal_plugins_cleanup();
+
/* after this point, any DPDK pointers will become dangling */
rte_eal_memory_detach();
rte_eal_malloc_heap_cleanup();