Lines Matching refs:module
21 void rt_module_init_object_container(struct rt_module *module) in rt_module_init_object_container() argument
23 RT_ASSERT(module != RT_NULL); in rt_module_init_object_container()
26 rt_list_init(&(module->module_object[RT_Object_Class_Thread].object_list)); in rt_module_init_object_container()
27 module->module_object[RT_Object_Class_Thread].object_size = sizeof(struct rt_thread); in rt_module_init_object_container()
28 module->module_object[RT_Object_Class_Thread].type = RT_Object_Class_Thread; in rt_module_init_object_container()
32 rt_list_init(&(module->module_object[RT_Object_Class_Semaphore].object_list)); in rt_module_init_object_container()
33 module->module_object[RT_Object_Class_Semaphore].object_size = sizeof(struct rt_semaphore); in rt_module_init_object_container()
34 module->module_object[RT_Object_Class_Semaphore].type = RT_Object_Class_Semaphore; in rt_module_init_object_container()
39 rt_list_init(&(module->module_object[RT_Object_Class_Mutex].object_list)); in rt_module_init_object_container()
40 module->module_object[RT_Object_Class_Mutex].object_size = sizeof(struct rt_mutex); in rt_module_init_object_container()
41 module->module_object[RT_Object_Class_Mutex].type = RT_Object_Class_Mutex; in rt_module_init_object_container()
46 rt_list_init(&(module->module_object[RT_Object_Class_Event].object_list)); in rt_module_init_object_container()
47 module->module_object[RT_Object_Class_Event].object_size = sizeof(struct rt_event); in rt_module_init_object_container()
48 module->module_object[RT_Object_Class_Event].type = RT_Object_Class_Event; in rt_module_init_object_container()
53 rt_list_init(&(module->module_object[RT_Object_Class_MailBox].object_list)); in rt_module_init_object_container()
54 module->module_object[RT_Object_Class_MailBox].object_size = sizeof(struct rt_mailbox); in rt_module_init_object_container()
55 module->module_object[RT_Object_Class_MailBox].type = RT_Object_Class_MailBox; in rt_module_init_object_container()
60 rt_list_init(&(module->module_object[RT_Object_Class_MessageQueue].object_list)); in rt_module_init_object_container()
61 … module->module_object[RT_Object_Class_MessageQueue].object_size = sizeof(struct rt_messagequeue); in rt_module_init_object_container()
62 module->module_object[RT_Object_Class_MessageQueue].type = RT_Object_Class_MessageQueue; in rt_module_init_object_container()
67 rt_list_init(&(module->module_object[RT_Object_Class_MemHeap].object_list)); in rt_module_init_object_container()
68 module->module_object[RT_Object_Class_MemHeap].object_size = sizeof(struct rt_memheap); in rt_module_init_object_container()
69 module->module_object[RT_Object_Class_MemHeap].type = RT_Object_Class_MemHeap; in rt_module_init_object_container()
74 rt_list_init(&(module->module_object[RT_Object_Class_MemPool].object_list)); in rt_module_init_object_container()
75 module->module_object[RT_Object_Class_MemPool].object_size = sizeof(struct rt_mempool); in rt_module_init_object_container()
76 module->module_object[RT_Object_Class_MemPool].type = RT_Object_Class_MemPool; in rt_module_init_object_container()
81 rt_list_init(&(module->module_object[RT_Object_Class_Device].object_list)); in rt_module_init_object_container()
82 module->module_object[RT_Object_Class_Device].object_size = sizeof(struct rt_device); in rt_module_init_object_container()
83 module->module_object[RT_Object_Class_Device].type = RT_Object_Class_Device; in rt_module_init_object_container()
87 rt_list_init(&(module->module_object[RT_Object_Class_Timer].object_list)); in rt_module_init_object_container()
88 module->module_object[RT_Object_Class_Timer].object_size = sizeof(struct rt_timer); in rt_module_init_object_container()
89 module->module_object[RT_Object_Class_Timer].type = RT_Object_Class_Timer; in rt_module_init_object_container()
93 static void (*rt_module_load_hook)(rt_module_t module);
94 static void (*rt_module_unload_hook)(rt_module_t module);
108 void rt_module_load_sethook(void (*hook)(rt_module_t module)) in rt_module_load_sethook() argument
119 void rt_module_unload_sethook(void (*hook)(rt_module_t module)) in rt_module_unload_sethook() argument
248 rt_module_t module; in rt_module_open() local
293 module = (struct rt_module *)rt_object_allocate(RT_Object_Class_Module, name); in rt_module_open()
294 if (!module) return RT_NULL; in rt_module_open()
296 module->nref = 0; in rt_module_open()
297 module->module_entry = fptr; in rt_module_open()
300 rt_module_init_object_container(module); in rt_module_open()
303 module->nref ++; in rt_module_open()
305 if (module->module_entry != 0) in rt_module_open()
309 module->mem_list = RT_NULL; in rt_module_open()
312 module->page_array = in rt_module_open()
314 module->page_cnt = 0; in rt_module_open()
318 module->module_thread = in rt_module_open()
320 (void(*)(void *))module->module_entry, RT_NULL, in rt_module_open()
323 LOG_D("thread entry %#x", module->module_entry); in rt_module_open()
326 module->module_thread->parent.module_id = (void *)module; in rt_module_open()
327 module->parent.flag = RT_MODULE_FLAG_WITHENTRY; in rt_module_open()
330 rt_thread_startup(module->module_thread); in rt_module_open()
335 module->parent.flag |= RT_MODULE_FLAG_WITHOUTENTRY; in rt_module_open()
341 rt_module_load_hook(module); in rt_module_open()
346 return module; in rt_module_open()
352 FINSH_FUNCTION_EXPORT_ALIAS(rt_module_open, exec, exec module from a file);
404 rt_module_t module = (rt_module_t) parameter; in module_main_entry() local
405 if (module == RT_NULL || module->module_cmd_line == RT_NULL) return; in module_main_entry()
408 argc = _rt_module_split_arg((char*)module->module_cmd_line, module->module_cmd_size, argv); in module_main_entry()
412 ((main_func_t)module->module_entry)(argc, argv); in module_main_entry()
430 rt_module_t module; in rt_module_exec_cmd() local
488 module = (struct rt_module *)rt_object_allocate(RT_Object_Class_Module, name); in rt_module_exec_cmd()
489 if (!module) in rt_module_exec_cmd()
494 module->nref = 0; in rt_module_exec_cmd()
495 module->module_entry = fptr; in rt_module_exec_cmd()
498 rt_module_init_object_container(module); in rt_module_exec_cmd()
501 module->nref ++; in rt_module_exec_cmd()
503 if (module->module_entry != 0) in rt_module_exec_cmd()
506 module->module_cmd_line = (rt_uint8_t*)rt_malloc(line_size + 1); in rt_module_exec_cmd()
507 rt_memcpy(module->module_cmd_line, cmd_line, line_size); in rt_module_exec_cmd()
508 module->module_cmd_line[line_size] = '\0'; in rt_module_exec_cmd()
509 module->module_cmd_size = line_size; in rt_module_exec_cmd()
513 module->mem_list = RT_NULL; in rt_module_exec_cmd()
516 module->page_array = in rt_module_exec_cmd()
518 module->page_cnt = 0; in rt_module_exec_cmd()
522 module->module_thread = rt_thread_create(name, in rt_module_exec_cmd()
523 module_main_entry, module, in rt_module_exec_cmd()
527 module->module_thread->parent.module_id = (void *)module; in rt_module_exec_cmd()
528 module->parent.flag = RT_MODULE_FLAG_WITHENTRY; in rt_module_exec_cmd()
531 rt_thread_startup(module->parent.module_thread); in rt_module_exec_cmd()
536 module->parent.flag |= RT_MODULE_FLAG_WITHOUTENTRY; in rt_module_exec_cmd()
542 rt_module_load_hook(module); in rt_module_exec_cmd()
547 return module; in rt_module_exec_cmd()
558 rt_err_t rt_module_destroy(rt_module_t module) in rt_module_destroy() argument
563 rt_err_t rt_module_unload(rt_module_t module) in rt_module_unload() argument