精简exit abort system函数
This commit is contained in:
parent
e19873db6d
commit
e927a53b41
|
@ -258,23 +258,8 @@ void _ttywrch(int ch)
|
|||
|
||||
RT_WEAK void _sys_exit(int return_code)
|
||||
{
|
||||
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();
|
||||
}
|
||||
|
||||
while(1); /* noreturn */
|
||||
extern rt_inline void __exit__(int status);
|
||||
__exit__(return_code);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -320,8 +305,8 @@ int remove(const char *filename)
|
|||
#else
|
||||
int system(const char *string)
|
||||
{
|
||||
RT_ASSERT(0);
|
||||
for (;;);
|
||||
extern rt_inline int __system__(const char *string);
|
||||
return __system__(string);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
|
@ -11,42 +11,12 @@
|
|||
|
||||
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)
|
||||
{
|
||||
rt_kprintf("thread:%-8.*s exit:%d!\n", RT_NAME_MAX, self->name, status);
|
||||
rt_thread_suspend(self);
|
||||
rt_schedule();
|
||||
}
|
||||
|
||||
while(1); /* noreturn */
|
||||
extern rt_inline void __exit__(int status);
|
||||
__exit__(return_code);
|
||||
}
|
||||
|
||||
void abort(void)
|
||||
{
|
||||
rt_thread_t self = rt_thread_self();
|
||||
|
||||
#ifdef RT_USING_MODULE
|
||||
if (dlmodule_self())
|
||||
{
|
||||
dlmodule_exit(-1);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (self != RT_NULL)
|
||||
{
|
||||
rt_kprintf("thread:%-8.*s abort!\n", RT_NAME_MAX, self->name);
|
||||
rt_thread_suspend(self);
|
||||
rt_schedule();
|
||||
}
|
||||
|
||||
while(1); /* noreturn */
|
||||
extern rt_inline void __abort__(void);
|
||||
__abort__();
|
||||
}
|
||||
|
|
|
@ -286,30 +286,15 @@ _free_r (struct _reent *ptr, void *addr)
|
|||
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)
|
||||
{
|
||||
rt_kprintf("thread:%-8.*s exit:%d!\n", RT_NAME_MAX, self->name, status);
|
||||
rt_thread_suspend(self);
|
||||
rt_schedule();
|
||||
}
|
||||
|
||||
while(1); /* noreturn */
|
||||
extern rt_inline void __exit__(int status);
|
||||
__exit__(status);
|
||||
}
|
||||
|
||||
void
|
||||
_system(const char *s)
|
||||
{
|
||||
/* not support this call */
|
||||
return;
|
||||
extern rt_inline int __system__(const char *string);
|
||||
__system__(string);
|
||||
}
|
||||
|
||||
void __libc_init_array(void)
|
||||
|
@ -319,23 +304,8 @@ void __libc_init_array(void)
|
|||
|
||||
void abort(void)
|
||||
{
|
||||
rt_thread_t self = rt_thread_self();
|
||||
|
||||
#ifdef RT_USING_MODULE
|
||||
if (dlmodule_self())
|
||||
{
|
||||
dlmodule_exit(-1);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (self != RT_NULL)
|
||||
{
|
||||
rt_kprintf("thread:%-8.*s abort!\n", RT_NAME_MAX, self->name);
|
||||
rt_thread_suspend(self);
|
||||
rt_schedule();
|
||||
}
|
||||
|
||||
while(1); /* noreturn */
|
||||
extern rt_inline void __abort__(void);
|
||||
__abort__();
|
||||
}
|
||||
|
||||
uid_t getuid(void)
|
||||
|
|
Loading…
Reference in New Issue