diff --git a/components/libc/libdl/dlmodule.c b/components/libc/libdl/dlmodule.c index 2829b7df7d..ee50427605 100644 --- a/components/libc/libdl/dlmodule.c +++ b/components/libc/libdl/dlmodule.c @@ -709,6 +709,7 @@ __exit: struct rt_dlmodule* dlmodule_exec_custom(const char* pgname, const char* cmd, int cmd_size, struct rt_dlmodule_ops* ops) { struct rt_dlmodule *module = RT_NULL; + rt_uint32_t tick = 10; module = dlmodule_load_custom(pgname, ops); if (module) @@ -721,11 +722,14 @@ struct rt_dlmodule* dlmodule_exec_custom(const char* pgname, const char* cmd, in module->cmd_line = rt_strdup(cmd); /* check stack size and priority */ + if (ops->priority) module->priority = ops->priority; + if (ops->stack_size) module->stack_size = ops->stack_size; + if (ops->tick) tick = ops->tick; if (module->priority > RT_THREAD_PRIORITY_MAX) module->priority = RT_THREAD_PRIORITY_MAX - 1; if (module->stack_size < 2048 || module->stack_size > (1024 * 32)) module->stack_size = 2048; tid = rt_thread_create(module->parent.name, _dlmodule_thread_entry, (void*)module, - module->stack_size, module->priority, 10); + module->stack_size, module->priority, tick); if (tid) { tid->module_id = module; diff --git a/components/libc/libdl/dlmodule.h b/components/libc/libdl/dlmodule.h index b366c7603e..28677b06a7 100644 --- a/components/libc/libdl/dlmodule.h +++ b/components/libc/libdl/dlmodule.h @@ -63,6 +63,10 @@ struct rt_dlmodule_ops { rt_uint8_t *(*load)(const char* filename); /* load dlmodule file data */ rt_err_t (*unload)(rt_uint8_t *param); /* unload dlmodule file data */ + + rt_uint16_t priority; + rt_uint32_t stack_size; + rt_uint32_t tick; }; struct rt_dlmodule *dlmodule_create(void);