diff options
| author | Meco Man <[email protected]> | 2021-02-17 00:02:28 +0800 |
|---|---|---|
| committer | Meco Man <[email protected]> | 2021-02-17 00:02:28 +0800 |
| commit | e927a53b41fa58573e14eccac37374d686ad3cf7 (patch) | |
| tree | 7e18aa21c63b86a7b7d18cdfb55349817f86d388 /components/libc/compilers/common/stdlib.c | |
| parent | e19873db6d6947f02e0b093251adf3c73daabdd8 (diff) | |
精简exit abort system函数
Diffstat (limited to 'components/libc/compilers/common/stdlib.c')
| -rw-r--r-- | components/libc/compilers/common/stdlib.c | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/components/libc/compilers/common/stdlib.c b/components/libc/compilers/common/stdlib.c new file mode 100644 index 0000000000..01f18aca5f --- /dev/null +++ b/components/libc/compilers/common/stdlib.c @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2006-2018, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-02-15 Meco Man first version + */ + +#include <rtthread.h> + +#define ABORT_STATUS 2 + +rt_inline void __exit__(int status) +{ + rt_thread_t self = rt_thread_self(); + +#ifdef RT_USING_MODULE + if (dlmodule_self()) + { + dlmodule_exit(status); + } +#endif + + if (self != RT_NULL) + { + if(status == ABORT_STATUS) /* abort() */ + { + rt_kprintf("thread:%s abort!\n", RT_NAME_MAX, self->name, status); + } + else /* exit() */ + { + rt_kprintf("thread:%s exit:%d!\n", RT_NAME_MAX, self->name, status); + } + rt_thread_suspend(self); + rt_schedule(); + } + + while(1); /* noreturn */ +} + +rt_inline void __abort__(void) +{ + __exit__(ABORT_STATUS); +} + +rt_inline int __system__(const char *string) +{ + /* TODO */ + return 0; +} |
