X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=include%2Fbabeltrace%2Fplugin%2Fplugin-internal.h;h=0509be4485dd32d844459c4f3e861a3cff9f3666;hp=b33eb2e37dd5fb5eb0cc6d92fc0348ed995373ac;hb=33b34c437c354e1c065e33151135bc2e57e2e29c;hpb=09ac5ce7990677798a58638ab45ab1a62e615a9a diff --git a/include/babeltrace/plugin/plugin-internal.h b/include/babeltrace/plugin/plugin-internal.h index b33eb2e3..0509be44 100644 --- a/include/babeltrace/plugin/plugin-internal.h +++ b/include/babeltrace/plugin/plugin-internal.h @@ -1,5 +1,5 @@ -#ifndef BABELTRACE_PLUGIN_INTERNAL_H -#define BABELTRACE_PLUGIN_INTERNAL_H +#ifndef BABELTRACE_PLUGIN_PLUGIN_INTERNAL_H +#define BABELTRACE_PLUGIN_PLUGIN_INTERNAL_H /* * BabelTrace - Plug-in Internal @@ -28,41 +28,35 @@ */ #include -#include -#include -#include +#include #include +#include #include -/** - * Plug-ins are owned by bt_component_factory and the bt_component_class-es - * it provides. This means that its lifetime bound by either the component - * factory's, or the concrete components' lifetime which may be in use and which - * have hold a reference to their bt_component_class which, in turn, have a - * reference to their plugin. - * - * This ensures that a plugin's library is not closed while it is being used - * even if the bt_component_factory, which created its components, is destroyed. - */ -struct bt_plugin { +struct bt_plugin_shared_lib_handle { struct bt_object base; + GString *path; + GModule *module; + bool init_called; + + /* The members below belong to the shared library */ const char *name; const char *author; const char *license; const char *description; - GString *path; - bt_plugin_register_func _register; - GModule *module; + bt_plugin_init_func init; + bt_plugin_exit_func exit; }; -BT_HIDDEN -struct bt_plugin *bt_plugin_create_from_module(GModule *module, const char *path); +struct bt_plugin { + struct bt_object base; + bool frozen; -BT_HIDDEN -struct bt_plugin *bt_plugin_create_from_static(size_t i); + /* Owned by this */ + struct bt_plugin_shared_lib_handle *shared_lib_handle; -BT_HIDDEN -enum bt_component_status bt_plugin_register_component_classes( - struct bt_plugin *plugin, struct bt_component_factory *factory); + /* Array of pointers to bt_component_class (owned by this) */ + GPtrArray *comp_classes; +}; -#endif /* BABELTRACE_PLUGIN_INTERNAL_H */ +#endif /* BABELTRACE_PLUGIN_PLUGIN_INTERNAL_H */