@@ -174,16 +174,21 @@ static void _dlmodule_thread_entry(void* parameter)
174174
175175struct rt_dlmodule * dlmodule_create (void )
176176{
177- struct rt_dlmodule * ret = RT_NULL ;
177+ struct rt_dlmodule * module = RT_NULL ;
178178
179- ret = (struct rt_dlmodule * ) rt_object_allocate (RT_Object_Class_Module , "module" );
180- if (ret )
179+ module = (struct rt_dlmodule * ) rt_object_allocate (RT_Object_Class_Module , "module" );
180+ if (module )
181181 {
182- ret -> stat = RT_DLMODULE_STAT_INIT ;
183- rt_list_init (& (ret -> object_list ));
182+ module -> stat = RT_DLMODULE_STAT_INIT ;
183+
184+ /* set initial priority and stack size */
185+ module -> priority = RT_THREAD_PRIORITY_MAX - 1 ;
186+ module -> stack_size = 2048 ;
187+
188+ rt_list_init (& (module -> object_list ));
184189 }
185190
186- return ret ;
191+ return module ;
187192}
188193
189194void dlmodule_destroy_subthread (struct rt_dlmodule * module , rt_thread_t thread )
@@ -519,8 +524,13 @@ struct rt_dlmodule* dlmodule_exec(const char* pgname, const char* cmd, int cmd_s
519524 rt_thread_t tid ;
520525
521526 module -> cmd_line = rt_strdup (cmd );
527+
528+ /* check stack size and priority */
529+ if (module -> priority > RT_THREAD_PRIORITY_MAX ) module -> priority = RT_THREAD_PRIORITY_MAX - 1 ;
530+ if (module -> stack_size < 2048 || module -> stack_size > (1024 * 32 )) module -> stack_size = 2048 ;
531+
522532 tid = rt_thread_create (module -> parent .name , _dlmodule_thread_entry , (void * )module ,
523- 2048 , RT_THREAD_PRIORITY_MAX - 1 , 10 );
533+ module -> stack_size , module -> priority , 10 );
524534 if (tid )
525535 {
526536 tid -> module_id = module ;
0 commit comments