summaryrefslogtreecommitdiff
path: root/components
diff options
context:
space:
mode:
authortonyzheng-rockchip <[email protected]>2020-01-02 08:54:48 +0800
committertonyzheng-rockchip <[email protected]>2020-01-02 08:54:48 +0800
commitf38b5a9f9f96ace22c68c747a9895c4e83416788 (patch)
tree0eaab6c59024d8e2f296a7ccb5d49cf56683f74c /components
parent2a175faea5b60e659985709ac17865abf717438a (diff)
Add priority & stack_size parameters for dlmodule custom
Diffstat (limited to 'components')
-rw-r--r--components/libc/libdl/dlmodule.c6
-rw-r--r--components/libc/libdl/dlmodule.h4
2 files changed, 9 insertions, 1 deletions
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);