动态模块相关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查找系统中是否已经有加载的动态模块。