mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2025-12-05 15:15:29 +00:00
fix module unload issue
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@2001 bbd45198-f89e-11dd-88c7-29a3b14d5316
This commit is contained in:
@@ -781,10 +781,12 @@ struct rt_module
|
|||||||
rt_uint32_t stack_size; /**< priority of module's thread */
|
rt_uint32_t stack_size; /**< priority of module's thread */
|
||||||
rt_uint32_t thread_priority;
|
rt_uint32_t thread_priority;
|
||||||
|
|
||||||
|
#ifdef RT_USING_SLAB
|
||||||
/* module memory allocator */
|
/* module memory allocator */
|
||||||
void *mem_list; /**< module's free memory list */
|
void *mem_list; /**< module's free memory list */
|
||||||
void *page_array; /**< module's using pages */
|
void *page_array; /**< module's using pages */
|
||||||
rt_uint32_t page_cnt; /**< module's using pages count */
|
rt_uint32_t page_cnt; /**< module's using pages count */
|
||||||
|
#endif
|
||||||
|
|
||||||
rt_uint32_t nsym; /**< number of symbol in the module */
|
rt_uint32_t nsym; /**< number of symbol in the module */
|
||||||
struct rt_module_symtab *symtab; /**< module symbol table */
|
struct rt_module_symtab *symtab; /**< module symbol table */
|
||||||
|
|||||||
13
src/module.c
13
src/module.c
@@ -374,14 +374,14 @@ static struct rt_module* _load_shared_object(const char *name, void *module_ptr)
|
|||||||
if (module_size == 0)
|
if (module_size == 0)
|
||||||
{
|
{
|
||||||
rt_kprintf(" module size error\n");
|
rt_kprintf(" module size error\n");
|
||||||
|
return RT_NULL;
|
||||||
return module;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* allocate module */
|
/* allocate module */
|
||||||
module = (struct rt_module *)rt_object_allocate(RT_Object_Class_Module, name);
|
module = (struct rt_module *)rt_object_allocate(RT_Object_Class_Module, name);
|
||||||
if (!module)
|
if (!module) return RT_NULL;
|
||||||
return RT_NULL;
|
|
||||||
|
module->nref = 0;
|
||||||
|
|
||||||
/* allocate module space */
|
/* allocate module space */
|
||||||
module->module_space = rt_malloc(module_size);
|
module->module_space = rt_malloc(module_size);
|
||||||
@@ -774,10 +774,10 @@ rt_module_t rt_module_load(const char *name, void *module_ptr)
|
|||||||
|
|
||||||
if (elf_module->e_entry != 0)
|
if (elf_module->e_entry != 0)
|
||||||
{
|
{
|
||||||
|
#ifdef RT_USING_SLAB
|
||||||
/* init module memory allocator */
|
/* init module memory allocator */
|
||||||
module->mem_list = RT_NULL;
|
module->mem_list = RT_NULL;
|
||||||
|
|
||||||
#ifdef RT_USING_SLAB
|
|
||||||
/* create page array */
|
/* create page array */
|
||||||
module->page_array = (void *)rt_malloc(PAGE_COUNT_MAX * sizeof(struct rt_page_info));
|
module->page_array = (void *)rt_malloc(PAGE_COUNT_MAX * sizeof(struct rt_page_info));
|
||||||
module->page_cnt = 0;
|
module->page_cnt = 0;
|
||||||
@@ -1527,7 +1527,6 @@ void *rt_module_realloc(void *ptr, rt_size_t size)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef RT_USING_FINSH
|
#ifdef RT_USING_FINSH
|
||||||
#include <finsh.h>
|
#include <finsh.h>
|
||||||
@@ -1569,3 +1568,5 @@ FINSH_FUNCTION_EXPORT(list_mempage, list module using memory page information)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user