今天來學習FreeSWITCH 加載模塊過程。
哪些模塊需要編譯,是由源碼下的 modules.conf 文件決定的。
哪些模塊在程序啟動時自動加載,是由 freeswitch/conf/autoload_configs/modules.conf.xml 決定的。
switch.c--main()
----> switch_core.c --switch_core_init_and_modload()
---->switch_loadable_module.c --switch_loadable_module_init()
---->switch_loadable_module.c --switch_loadable_module_load_module_ex(最底層的加載函數)
#define SWITCH_MODULE_LOAD_FUNCTION(name) switch_status_t name SWITCH_MODULE_LOAD_ARGS
#define SWITCH_MODULE_LOAD_ARGS (switch_loadable_module_interface_t **module_interface, switch_memory_pool_t *pool)
SWITCH_MODULE_LOAD_FUNCTION(mod_tts_commandline_load)
等價於:
unsigned int mod_tts_commandline_load (switch_loadable_module_interface_t **module_interface, switch_memory_pool_t *pool)