浏览代码

优化abort函数

Meco Man 4 年之前
父节点
当前提交
eaa3454bbe

+ 1 - 0
components/libc/compilers/armlibc/syscalls.c

@@ -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);

+ 1 - 14
components/libc/compilers/common/stdlib.c

@@ -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)
 
 
     if (self != RT_NULL)
     if (self != RT_NULL)
     {
     {
-        if(status == EXIT_FAILURE) /* abort() */
-        {
-            rt_kprintf("thread:%s abort!\n", self->name);
-        }
-        else /* exit() */
-        {
-            rt_kprintf("thread:%s exit:%d!\n", self->name, status);
-        }
+        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 */

+ 2 - 8
components/libc/compilers/dlib/syscalls.c

@@ -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);
-}

+ 2 - 9
components/libc/compilers/newlib/syscalls.c

@@ -283,8 +283,8 @@ _free_r (struct _reent *ptr, void *addr)
     rt_free (addr);
     rt_free (addr);
 }
 }
 
 
-void
-exit (int status)
+__attribute__ ((noreturn)) 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);
@@ -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;