diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/plugins.h | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/include/plugins.h b/include/plugins.h index cbd841d..6d4a87d 100644 --- a/include/plugins.h +++ b/include/plugins.h @@ -8,7 +8,7 @@ typedef struct ptx__plugin_manager_tag ptx_plugin_manager_t; typedef struct ptx__plugin_handle_tag ptx_plugin_t; /* returns: - * - < 0 for plugin loading error (plugin will not be loaded) + * - < 0 for plugin loading error (plugin will be unloaded) * - 0 for successful plugin startup * - (don't return values greater than 0 at this time) * usage: @@ -22,30 +22,30 @@ typedef int (ptx_plugin_init_proc_t)(ptx_plugin_t * /*plugin*/, void * /*resume* enum { /* This plugin cannot be resumed at this time. The plugin manager will not unload it if it expects a "seamless" reload. * The plugin is expected to act as if this function was not called. */ - PTX_PLUGIN_CANNOT_RESUME = -1, + DEINIT_ERR_RESUME_UNSUPPORTED = -1, /* The plugin supports being resumed, but due to a transient error condition (malloc failure?) the plugin could not set itself up for * resuming. If a plugin returns this value to the plugin manager, it is expected to act as if the function was not called. */ - PTX_PLUGIN_RESUME_ERR = -2, + DEINIT_ERR_RESUME_FAILURE = -2, /* The plugin supports being resumed, but due to a transient error condition, the plugin could not set itself up for resuming. * Additionally, as a part of preparing to be reloaded, the plugin performed operations it could not roll back. Likely, an error * will be reported to the user, and the plugin will be unloaded. The plugin manager makes no assumptions about the behavior of the * plugin at this time. */ - PTX_PLUGIN_RESUME_ERR_UNRECOVERABLE = -3, + DEINIT_ERR_RESUME_UNRECOVERABLE = -3, - /* The plugin is ready to be resumed. */ - PTX_PLUGIN_RESUME_OK = 0 + /* The plugin is ready to be resumed/unloaded. */ + DEINIT_OK = 0 }; /* returns: - * - one of the PTX_PLUGIN_* values in the above enum. if the return value is anything else, the plugin manager's behavior is not defined. + * - one of the values in the above enum. if the return value is anything else, the plugin manager's behavior is not defined. */ -typedef int (ptx_plugin_restart_proc_t)(ptx_plugin_t * /*plugin*/, void ** /*presume*/); +typedef int (ptx_plugin_deinit_proc_t)(ptx_plugin_t * /*plugin*/, void ** /*presume*/); -#define PTX_MOD_VERSION (1u) +#define PTX_CUR_PLUGIN_VERSION (1u) -/* the fields of this struct are public. ABI changes should be marked by incrementing PTX_MOD_VERSION */ +/* the fields of this struct are public. ABI changes should be marked by incrementing PTX_CUR_PLUGIN_VERSION */ struct ptx_plugin_desc { size_t desc_len; @@ -53,7 +53,7 @@ struct ptx_plugin_desc unsigned reserved; ptx_plugin_init_proc_t *init_proc; - ptx_plugin_restart_proc_t *restart_proc; + ptx_plugin_deinit_proc_t *deinit_proc; const char *name; const char *description; @@ -72,7 +72,7 @@ struct ptx_plugin_desc #define PTX_PLUGIN_DESC_START PTX_EXPORT \ const struct ptx_plugin_desc PTX__INTERNAL_PLUGIN_DESC_SYM = { \ .desc_len = sizeof(struct ptx_plugin_desc), \ - .desc_ver = PTX_MOD_VERSION, + .desc_ver = PTX_CUR_PLUGIN_VERSION, #define PTX_PLUGIN_NAME(_x) .name = _x, #define PTX_PLUGIN_DESCRIPTION(_x) .description = _x, @@ -89,4 +89,10 @@ PTX_INTERNAL(void ptx_plugin_manager_free(ptx_plugin_manager_t *mgr)); PTX_INTERNAL(int ptx_plugin_manager_load_dir(ptx_plugin_manager_t *mgr, const char *dir)); +/* initializes plugins which have not yet been initialized. returns the number of plugins which have been initialized and are still loaded + * (plugins can return a failure from their initialization function, at which point the plugin will be unloaded.) */ +PTX_INTERNAL(int ptx_plugin_manager_init_plugins(ptx_plugin_manager_t *mgr)); + +PTX_API void ptx_plugin_set_mainloop_func(ptx_plugin_t *plugin, void *func); + #endif |
