aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorLibravatar bigfoot547 <[email protected]>2025-11-28 20:03:39 -0600
committerLibravatar bigfoot547 <[email protected]>2025-11-28 20:03:39 -0600
commitb36c1ce0ebc9fc08efcc85566f26a147e1cdfad1 (patch)
tree039eab4e9e874712718676dd3435e9ca88ae5665 /include
parentmore work on plugins (diff)
[incomplete] random changes before resetorig
Diffstat (limited to 'include')
-rw-r--r--include/plugins.h30
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