[vlc-commits] modules: add module_Symbol() internal helper

Rémi Denis-Courmont git at videolan.org
Fri Jul 19 18:21:43 CEST 2019


vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Thu Jul 18 21:47:37 2019 +0300| [d948aea6d280d023453b415c388bed585518fb8f] | committer: Rémi Denis-Courmont

modules: add module_Symbol() internal helper

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=d948aea6d280d023453b415c388bed585518fb8f
---

 src/modules/bank.c    | 18 ++++++++++++++++++
 src/modules/modules.h |  1 +
 2 files changed, 19 insertions(+)

diff --git a/src/modules/bank.c b/src/modules/bank.c
index 8bc85b06ba..06a251d877 100644
--- a/src/modules/bank.c
+++ b/src/modules/bank.c
@@ -592,6 +592,17 @@ static void module_Unmap(vlc_plugin_t *plugin)
     if (handle != NULL)
         vlc_dlclose(handle);
 }
+
+void *module_Symbol(struct vlc_logger *log,
+                    vlc_plugin_t *plugin, const char *name)
+{
+    if (module_Map(log, plugin))
+        return NULL;
+
+    void *handle = (void *)atomic_load_explicit(&plugin->handle,
+                                                memory_order_relaxed);
+    return vlc_dlsym(handle, name);
+}
 #else
 int module_Map(struct vlc_logger *log, vlc_plugin_t *plugin)
 {
@@ -603,6 +614,13 @@ static void module_Unmap(vlc_plugin_t *plugin)
 {
     (void) plugin;
 }
+
+void *module_Symbol(struct vlc_logger *log,
+                    vlc_plugin_t *plugin, const char *name)
+{
+    (void) log; (void) plugin; (void) name;
+    return NULL;
+}
 #endif /* HAVE_DYNAMIC_PLUGINS */
 
 /**
diff --git a/src/modules/modules.h b/src/modules/modules.h
index 1c7d32e8e5..118a3aa7c4 100644
--- a/src/modules/modules.h
+++ b/src/modules/modules.h
@@ -111,6 +111,7 @@ void module_LoadPlugins(vlc_object_t *);
 #define module_LoadPlugins(a) module_LoadPlugins(VLC_OBJECT(a))
 void module_EndBank (bool);
 int module_Map(struct vlc_logger *, vlc_plugin_t *);
+void *module_Symbol(struct vlc_logger *, vlc_plugin_t *, const char *name);
 
 ssize_t module_list_cap (module_t ***, const char *);
 



More information about the vlc-commits mailing list