提交 eaa3454b 编写于 作者: mysterywolf's avatar mysterywolf

优化abort函数

上级 8ea33c21
...@@ -256,6 +256,7 @@ void _ttywrch(int ch) ...@@ -256,6 +256,7 @@ void _ttywrch(int ch)
#endif #endif
} }
/* for exit() and abort() */
RT_WEAK void _sys_exit(int return_code) RT_WEAK void _sys_exit(int return_code)
{ {
extern void __rt_libc_exit(int status); extern void __rt_libc_exit(int status);
......
...@@ -9,7 +9,6 @@ ...@@ -9,7 +9,6 @@
*/ */
#include <rtthread.h> #include <rtthread.h>
#include <stdlib.h>
void __rt_libc_exit(int status) void __rt_libc_exit(int status)
{ {
...@@ -24,24 +23,12 @@ void __rt_libc_exit(int status) ...@@ -24,24 +23,12 @@ void __rt_libc_exit(int status)
if (self != RT_NULL) if (self != RT_NULL)
{ {
if(status == EXIT_FAILURE) /* abort() */ rt_kprintf("thread:%s exit:%d!\n", self->name, status);
{
rt_kprintf("thread:%s abort!\n", self->name);
}
else /* exit() */
{
rt_kprintf("thread:%s exit:%d!\n", self->name, status);
}
rt_thread_suspend(self); rt_thread_suspend(self);
rt_schedule(); rt_schedule();
} }
} }
void __rt_libc_abort(void)
{
__rt_libc_exit(EXIT_FAILURE);
}
int __rt_libc_system(const char *string) int __rt_libc_system(const char *string)
{ {
/* TODO */ /* TODO */
......
...@@ -9,16 +9,10 @@ ...@@ -9,16 +9,10 @@
*/ */
#include <rtthread.h> #include <rtthread.h>
void exit (int status) /* for exit() and abort() */
void __exit (int status)
{ {
extern void __rt_libc_exit(int status); extern void __rt_libc_exit(int status);
__rt_libc_exit(status); __rt_libc_exit(status);
while(1); while(1);
} }
void abort(void)
{
extern void __rt_libc_abort(void);
__rt_libc_abort();
while(1);
}
...@@ -283,8 +283,8 @@ _free_r (struct _reent *ptr, void *addr) ...@@ -283,8 +283,8 @@ _free_r (struct _reent *ptr, void *addr)
rt_free (addr); rt_free (addr);
} }
void __attribute__ ((noreturn)) void
exit (int status) _exit (int status)
{ {
extern void __rt_libc_exit(int status); extern void __rt_libc_exit(int status);
__rt_libc_exit(status); __rt_libc_exit(status);
...@@ -303,13 +303,6 @@ void __libc_init_array(void) ...@@ -303,13 +303,6 @@ void __libc_init_array(void)
/* we not use __libc init_aray to initialize C++ objects */ /* we not use __libc init_aray to initialize C++ objects */
} }
void abort(void)
{
extern void __rt_libc_abort(void);
__rt_libc_abort();
while(1);
}
uid_t getuid(void) uid_t getuid(void)
{ {
return 0; return 0;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册