From 9724cce968cb98c1d74da7445b84ab6f4ddf560b Mon Sep 17 00:00:00 2001 From: Philippe Proulx Date: Sat, 8 Dec 2018 15:38:21 -0500 Subject: [PATCH] lib: remove unused public `enum bt_plugin_status` Also: * Make the plugin's user exit function return nothing. It's not like we can cancel this anyway. * Make the plugin's user init function return `enum bt_plugin_init_status`, an enumeration reserved for this function, in case `enum bt_plugin_status` becomes public in the future. Signed-off-by: Philippe Proulx --- cli/babeltrace.c | 6 ++-- include/babeltrace/plugin/plugin-const.h | 6 ---- include/babeltrace/plugin/plugin-dev.h | 10 ++++-- include/babeltrace/plugin/plugin-internal.h | 6 ++++ lib/plugin/plugin-so.c | 35 +++++++++++++-------- tests/lib/test-plugin-plugins/minimal.c | 7 ++--- 6 files changed, 42 insertions(+), 28 deletions(-) diff --git a/cli/babeltrace.c b/cli/babeltrace.c index 101fb5f5..5abbcd0d 100644 --- a/cli/babeltrace.c +++ b/cli/babeltrace.c @@ -883,7 +883,7 @@ void print_plugin_info(const bt_plugin *plugin) { unsigned int major, minor, patch; const char *extra; - enum bt_plugin_status version_status; + enum bt_property_availability version_avail; const char *plugin_name; const char *path; const char *author; @@ -895,7 +895,7 @@ void print_plugin_info(const bt_plugin *plugin) author = bt_plugin_get_author(plugin); license = bt_plugin_get_license(plugin); plugin_description = bt_plugin_get_description(plugin); - version_status = bt_plugin_get_version(plugin, &major, &minor, + version_avail = bt_plugin_get_version(plugin, &major, &minor, &patch, &extra); printf("%s%s%s%s:\n", bt_common_color_bold(), bt_common_color_fg_blue(), plugin_name, @@ -907,7 +907,7 @@ void print_plugin_info(const bt_plugin *plugin) puts(" Built-in"); } - if (version_status == BT_PLUGIN_STATUS_OK) { + if (version_avail == BT_PROPERTY_AVAILABILITY_AVAILABLE) { printf(" %sVersion%s: %u.%u.%u", bt_common_color_bold(), bt_common_color_reset(), major, minor, patch); diff --git a/include/babeltrace/plugin/plugin-const.h b/include/babeltrace/plugin/plugin-const.h index fe51a856..f19da61d 100644 --- a/include/babeltrace/plugin/plugin-const.h +++ b/include/babeltrace/plugin/plugin-const.h @@ -55,12 +55,6 @@ extern "C" { #endif -enum bt_plugin_status { - BT_PLUGIN_STATUS_OK = 0, - BT_PLUGIN_STATUS_ERROR = -1, - BT_PLUGIN_STATUS_NOMEM = -12, -}; - extern const bt_plugin *bt_plugin_find(const char *plugin_name); extern const bt_plugin_set *bt_plugin_find_all_from_file( diff --git a/include/babeltrace/plugin/plugin-dev.h b/include/babeltrace/plugin/plugin-dev.h index 94bfb700..21771ca9 100644 --- a/include/babeltrace/plugin/plugin-dev.h +++ b/include/babeltrace/plugin/plugin-dev.h @@ -63,11 +63,17 @@ extern "C" { #define __BT_PLUGIN_VERSION_MINOR 0 /* Plugin initialization function type */ -typedef enum bt_plugin_status (*bt_plugin_init_func)( +enum bt_plugin_init_status { + BT_PLUGIN_INIT_STATUS_OK = 0, + BT_PLUGIN_INIT_STATUS_NOMEM = -12, + BT_PLUGIN_INIT_STATUS_ERROR = -1, +}; + +typedef enum bt_plugin_init_status (*bt_plugin_init_func)( const bt_plugin *plugin); /* Plugin exit function type */ -typedef enum bt_plugin_status (*bt_plugin_exit_func)(void); +typedef void (*bt_plugin_exit_func)(void); /* Plugin descriptor: describes a single plugin (internal use) */ struct __bt_plugin_descriptor { diff --git a/include/babeltrace/plugin/plugin-internal.h b/include/babeltrace/plugin/plugin-internal.h index 65926c0b..763a68b2 100644 --- a/include/babeltrace/plugin/plugin-internal.h +++ b/include/babeltrace/plugin/plugin-internal.h @@ -39,6 +39,12 @@ enum bt_plugin_type { BT_PLUGIN_TYPE_PYTHON = 1, }; +enum bt_plugin_status { + BT_PLUGIN_STATUS_OK = 0, + BT_PLUGIN_STATUS_ERROR = -1, + BT_PLUGIN_STATUS_NOMEM = -12, +}; + struct bt_plugin { struct bt_object base; enum bt_plugin_type type; diff --git a/lib/plugin/plugin-so.c b/lib/plugin/plugin-so.c index f785554d..a535d9d8 100644 --- a/lib/plugin/plugin-so.c +++ b/lib/plugin/plugin-so.c @@ -102,6 +102,21 @@ void fini_comp_class_list(void) BT_LOGD_STR("Released references from all component classes to shared library handles."); } +static inline +const char *bt_plugin_init_status_string(enum bt_plugin_init_status status) +{ + switch (status) { + case BT_PLUGIN_INIT_STATUS_OK: + return "BT_PLUGIN_INIT_STATUS_OK"; + case BT_PLUGIN_INIT_STATUS_ERROR: + return "BT_PLUGIN_INIT_STATUS_ERROR"; + case BT_PLUGIN_INIT_STATUS_NOMEM: + return "BT_PLUGIN_INIT_STATUS_NOMEM"; + default: + return "(unknown)"; + } +} + static void bt_plugin_so_shared_lib_handle_destroy(struct bt_object *obj) { @@ -117,17 +132,9 @@ void bt_plugin_so_shared_lib_handle_destroy(struct bt_object *obj) shared_lib_handle, path); if (shared_lib_handle->init_called && shared_lib_handle->exit) { - enum bt_plugin_status status; - BT_LOGD_STR("Calling user's plugin exit function."); - status = shared_lib_handle->exit(); - BT_LOGD("User function returned: %s", - bt_plugin_status_string(status)); - - if (status < 0) { - BT_LOGW("User's plugin exit function failed: " - "path=\"%s\"", path); - } + shared_lib_handle->exit(); + BT_LOGD_STR("User function returned."); } if (shared_lib_handle->module) { @@ -673,13 +680,15 @@ enum bt_plugin_status bt_plugin_so_init( /* Initialize plugin */ if (spec->init) { + enum bt_plugin_init_status init_status; BT_LOGD_STR("Calling user's plugin initialization function."); - status = spec->init(plugin); + init_status = spec->init(plugin); BT_LOGD("User function returned: %s", - bt_plugin_status_string(status)); + bt_plugin_init_status_string(init_status)); - if (status < 0) { + if (init_status < 0) { BT_LOGW_STR("User's plugin initialization function failed."); + status = BT_PLUGIN_STATUS_ERROR; goto end; } } diff --git a/tests/lib/test-plugin-plugins/minimal.c b/tests/lib/test-plugin-plugins/minimal.c index 5ea4bde6..d6fa367e 100644 --- a/tests/lib/test-plugin-plugins/minimal.c +++ b/tests/lib/test-plugin-plugins/minimal.c @@ -19,16 +19,15 @@ #include #include -static enum bt_plugin_status plugin_init(const bt_plugin *plugin) +static enum bt_plugin_init_status plugin_init(const bt_plugin *plugin) { g_setenv("BT_TEST_PLUGIN_INIT_CALLED", "1", 1); - return BT_PLUGIN_STATUS_OK; + return BT_PLUGIN_INIT_STATUS_OK; } -static enum bt_plugin_status plugin_exit(void) +static void plugin_exit(void) { g_setenv("BT_TEST_PLUGIN_EXIT_CALLED", "1", 1); - return BT_PLUGIN_STATUS_OK; } BT_PLUGIN_MODULE(); -- 2.34.1