动态模块相关API
除了可以通过msh直接加载并执行动态模块外,也可以在主程序中使用RT-Thread提供的动态模块API来加载或卸载应用模块。
struct rt_dlmodule dlmodule_load(const char pgname);
函数参数
参数 | 描述 |
---|---|
pgname | 动态模块的路径 |
函数返回
正确加载返回模块指针,否则返回NULL
这个函数从文件系统中加载应用模块到内存中,若正确加载返回该模块的指针。这个函数并不会创建一个线程去执行这个动态模块,仅仅把模块加载到内存中,并解析其中的符号地址。
struct rt_dlmodule dlmodule_exec(const char pgname, const char* cmd, int cmd_size);
函数参数
参数 | 描述 |
---|---|
pgname | 动态模块的路径 |
cmd | 包括动态模块命令自身的命令行字符串 |
cmd_size | 命令行字符串大小 |
函数返回
加载并运行动态模块成功则返回动态模块指针,否则返回NULL
这个函数根据pgname
路径加载动态模块,并启动一个线程来执行这个动态模块的main
函数,同时cmd
会作为命令行参数传递给动态模块的main
函数入口。
void dlmodule_exit(int ret_code);
函数参数
参数 | 描述 |
---|---|
ret_code | 模块的返回参数 |
函数返回
无
这个函数由模块运行时调用,它可以设置模块退出的返回值ret_code
,然后从模块退出。
struct rt_dlmodule dlmodule_find(const char name);
函数参数
参数 | 描述 |
---|---|
name | 模块名称 |
函数返回
如果系统中有对应的动态模块,则返回这个动态模块的指针;否则返回NULL。
这个函数以name
查找系统中是否已经有加载的动态模块。
struct rt_dlmodule *dlmodule_self(void);
函数参数
无
函数返回
返回调用上下文环境下动态模块本身;如果不处于动态模块运行上下文环境内,则返回NULL。
这个函数返回调用上下文环境下动态模块的指针。
rt_uint32_t dlmodule_symbol_find(const char *sym_str);
函数参数
参数 | 描述 |
---|---|
name | 模块名称 |
函数返回
如果系统中有对应的动态模块,则返回这个动态模块的指针;否则返回NULL。
这个函数以name
查找系统中是否已经有加载的动态模块。