diff --git a/components/finsh/finsh.h b/components/finsh/finsh.h index 87f8d727809bf789cf2304302f11d99e2b43e872..fd51b72a64da181c41bd39fe2ac3f23046d9e716 100644 --- a/components/finsh/finsh.h +++ b/components/finsh/finsh.h @@ -173,6 +173,25 @@ struct finsh_sysvar* finsh_sysvar_lookup(const char* name); (syscall_func)&name \ }; + /** + * @ingroup finsh + * + * This macro exports a system function with an alias name to finsh shell. + * + * @param name the name of function. + * @param alias the alias name of function. + * @param desc the description of function, which will show in help. + */ + #define FINSH_FUNCTION_EXPORT_ALIAS(name, alias, desc) \ + const char __fsym_##name##_name[] = #alias; \ + const char __fsym_##name##_desc[] = #desc; \ + const struct finsh_syscall __fsym_##name SECTION("FSymTab")= \ + { \ + __fsym_##name##_name, \ + __fsym_##name##_desc, \ + (syscall_func)&name \ + }; + /** * @ingroup finsh * @@ -201,6 +220,14 @@ struct finsh_sysvar* finsh_sysvar_lookup(const char* name); (syscall_func)&name \ }; + #define FINSH_FUNCTION_EXPORT_ALIAS(name, alias, desc) \ + const char __fsym_##name##_name[] = #alias; \ + const struct finsh_syscall __fsym_##name SECTION("FSymTab")= \ + { \ + __fsym_##name##_name, \ + (syscall_func)&name \ + }; + #define FINSH_VAR_EXPORT(name, type, desc) \ const char __vsym_##name##_name[] = #name; \ const struct finsh_sysvar __vsym_##name SECTION("VSymTab")= \ @@ -212,6 +239,7 @@ struct finsh_sysvar* finsh_sysvar_lookup(const char* name); #endif #else #define FINSH_FUNCTION_EXPORT(name, desc) + #define FINSH_FUNCTION_EXPORT_ALIAS(name, alias, desc) #define FINSH_VAR_EXPORT(name, type, desc) #endif diff --git a/src/module.c b/src/module.c index 5bab451ac3e5747a83a56041aa72c71da331e671..a8875126cab162c3e1e1ff165a2d467b628772f3 100644 --- a/src/module.c +++ b/src/module.c @@ -478,7 +478,7 @@ rt_module_t rt_module_open(const char* filename) #if defined(RT_USING_FINSH) #include -FINSH_FUNCTION_EXPORT(rt_module_open, load module from file); +FINSH_FUNCTION_EXPORT_ALIAS(rt_module_open, exec, exec module from file); #endif #endif