mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-11-03 20:38:59 +00:00 
			
		
		
		
	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
This commit is contained in:
		@@ -107,7 +107,7 @@ static int readfile_exec(struct ast_channel *chan, void *data)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
int unload_module(void)
 | 
			
		||||
static int unload_module(void *mod)
 | 
			
		||||
{
 | 
			
		||||
	int res;
 | 
			
		||||
 | 
			
		||||
@@ -118,24 +118,19 @@ int unload_module(void)
 | 
			
		||||
	return res;	
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int load_module(void)
 | 
			
		||||
static int load_module(void *mod)
 | 
			
		||||
{
 | 
			
		||||
	return ast_register_application(app_readfile, readfile_exec, readfile_synopsis, readfile_descrip);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const char *description(void)
 | 
			
		||||
static const char *description(void)
 | 
			
		||||
{
 | 
			
		||||
	return tdesc;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int usecount(void)
 | 
			
		||||
{
 | 
			
		||||
	int res;
 | 
			
		||||
	STANDARD_USECOUNT(res);
 | 
			
		||||
	return res;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const char *key()
 | 
			
		||||
static const char *key(void)
 | 
			
		||||
{
 | 
			
		||||
	return ASTERISK_GPL_KEY;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
STD_MOD1;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user