From b89b3958bc97b2df5eeca301f8a463cccab88fbc Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Sat, 13 Feb 2021 13:16:17 +0800 Subject: [libc][exit][abort] 重新实现exit和abort函数 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/libc/compilers/armlibc/stubs.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'components/libc/compilers/armlibc') diff --git a/components/libc/compilers/armlibc/stubs.c b/components/libc/compilers/armlibc/stubs.c index b4cc13799e..600100c554 100644 --- a/components/libc/compilers/armlibc/stubs.c +++ b/components/libc/compilers/armlibc/stubs.c @@ -255,8 +255,21 @@ void _ttywrch(int ch) RT_WEAK void _sys_exit(int return_code) { - /* TODO: perhaps exit the thread which is invoking this function */ - while (1); + rt_thread_t self = rt_thread_self(); + +#ifdef RT_USING_MODULE + if (dlmodule_self()) + { + dlmodule_exit(return_code); + } +#endif + + if (self != RT_NULL) + { + rt_kprintf("thread:%-8.*s exit:%d!\n", RT_NAME_MAX, self->name, return_code); + rt_thread_suspend(self); + rt_schedule(); + } } /** -- cgit v1.3.1