diff --git a/src/idle.c b/src/idle.c index bb6edebfcc..49466b81b4 100644 --- a/src/idle.c +++ b/src/idle.c @@ -27,9 +27,7 @@ static struct rt_thread idle; ALIGN(RT_ALIGN_SIZE) static rt_uint8_t rt_thread_stack[IDLE_THREAD_STACK_SIZE]; -#ifdef RT_USING_HEAP extern rt_list_t rt_thread_defunct; -#endif #ifdef RT_USING_HOOK /** @@ -60,7 +58,6 @@ void rt_thread_idle_sethook(void (*hook)()) */ void rt_thread_idle_excute(void) { -#ifdef RT_USING_HEAP /* check the defunct thread list */ if (!rt_list_isempty(&rt_thread_defunct)) { @@ -113,6 +110,7 @@ void rt_thread_idle_excute(void) /* enable interrupt */ rt_hw_interrupt_enable(lock); +#ifdef RT_USING_HEAP #ifdef RT_USING_MODULE /* the thread belongs to an application module */ if(thread->flags & RT_OBJECT_FLAG_MODULE) @@ -138,8 +136,8 @@ void rt_thread_idle_excute(void) /* unload module */ if(module->nref == 0) rt_module_unload(module); #endif - } #endif + } } static void rt_thread_idle_entry(void* parameter) diff --git a/src/scheduler.c b/src/scheduler.c index ccc8f12ae9..9ce552f70e 100644 --- a/src/scheduler.c +++ b/src/scheduler.c @@ -48,9 +48,7 @@ rt_uint8_t rt_thread_ready_table[32]; rt_uint32_t rt_thread_ready_priority_group; #endif -#ifdef RT_USING_HEAP rt_list_t rt_thread_defunct; -#endif const rt_uint8_t rt_lowest_bitmap[] = { @@ -106,6 +104,12 @@ static void _rt_scheduler_stack_check(struct rt_thread* thread) rt_uint32_t level; rt_kprintf("thread:%s stack overflow\n", thread->name); + #ifdef RT_USING_FINSH + { + extern long list_thread(void); + list_thread(); + } + #endif level = rt_hw_interrupt_disable(); while (level); } diff --git a/src/thread.c b/src/thread.c index 0f6b658ea6..26d263afcb 100644 --- a/src/thread.c +++ b/src/thread.c @@ -31,10 +31,7 @@ extern rt_list_t rt_thread_priority_table[RT_THREAD_PRIORITY_MAX]; extern struct rt_thread* rt_current_thread; extern rt_uint8_t rt_current_priority; - -#ifdef RT_USING_HEAP extern rt_list_t rt_thread_defunct; -#endif static void rt_thread_exit(void); void rt_thread_timeout(void* parameter);