diff options
| author | Meco Man <[email protected]> | 2021-02-13 13:16:17 +0800 |
|---|---|---|
| committer | Meco Man <[email protected]> | 2021-02-13 13:16:17 +0800 |
| commit | b89b3958bc97b2df5eeca301f8a463cccab88fbc (patch) | |
| tree | 08a4c5a5116bccec7217b9b7375354082d1d9919 /components/libc/compilers/armlibc | |
| parent | f0805a7973ffe62e459da7748cbada62bccf98b9 (diff) | |
[libc][exit][abort] 重新实现exit和abort函数
Diffstat (limited to 'components/libc/compilers/armlibc')
| -rw-r--r-- | components/libc/compilers/armlibc/stubs.c | 17 |
1 files changed, 15 insertions, 2 deletions
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(); + } } /** |
