summaryrefslogtreecommitdiff
path: root/include/asterisk.h
diff options
context:
space:
mode:
authorLuigi Rizzo <rizzo@icir.org>2006-04-14 14:08:19 +0000
committerLuigi Rizzo <rizzo@icir.org>2006-04-14 14:08:19 +0000
commite43bc6634dc60ca897a848ca3301f52c74330279 (patch)
treeb68f48482e463e9c31126b2e3e24fca1dd2f6c82 /include/asterisk.h
parent33a3a7375a4917455495c08c8602bfe453580fd1 (diff)
This rather large commit changes the way modules are loaded.
As partly documented in loader.c and include/asterisk/module.h, modules are now expected to return all of their methods and flags into a structure 'mod_data', and are normally loaded with RTLD_NOW | RTLD_LOCAL, so symbols are resolved immediately and conflicts should be less likely. Only in a small number of cases (res_*, typically) modules are loaded RTLD_GLOBAL, so they can export symbols. The core of the change is only the two files loader.c and include/asterisk/module.h, all the rest is simply adaptation of the existing modules to the new API, a rather mechanical (but believe me, time and finger-consuming!) process whose detail you can figure out by svn diff'ing any single module. Expect some minor compilation issue after this change, please report it on mantis http://bugs.digium.com/view.php?id=6968 so we collect all the feedback in one place. I am just sorry that this change missed SVN version number 20000! git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@20003 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'include/asterisk.h')
-rw-r--r--include/asterisk.h24
1 files changed, 20 insertions, 4 deletions
diff --git a/include/asterisk.h b/include/asterisk.h
index 7e63f608c..8e8683211 100644
--- a/include/asterisk.h
+++ b/include/asterisk.h
@@ -74,16 +74,32 @@ void dnsmgr_start_refresh(void);
int dnsmgr_reload(void);
/*!
+ * \brief Reload asterisk modules.
+ * \param name the name of the module to reload
+ *
+ * This function reloads the specified module, or if no modules are specified,
+ * it will reload all loaded modules.
+ *
+ * \note Modules are reloaded using their reload() functions, not unloading
+ * them and loading them again.
+ *
+ * \return Zero if the specified module was not found, 1 if the module was
+ * found but cannot be reloaded, -1 if a reload operation is already in
+ * progress, and 2 if the specfied module was found and reloaded.
+ */
+int ast_module_reload(const char *name);
+
+/*!
* \brief Register a function to be executed before Asterisk exits.
* \param func The callback function to use.
- *
+ *
* \return Zero on success, -1 on error.
*/
int ast_register_atexit(void (*func)(void));
-
-/*!
+
+/*!
* \brief Unregister a function registered with ast_register_atexit().
- * \param func The callback function to unregister.
+ * \param func The callback function to unregister.
*/
void ast_unregister_atexit(void (*func)(void));