stdlib.c 901 字节
Newer Older
mysterywolf's avatar
mysterywolf 已提交
1 2 3 4 5 6 7 8 9 10 11
/*
 * 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>
mysterywolf's avatar
update  
mysterywolf 已提交
12
#include <stdlib.h>
mysterywolf's avatar
mysterywolf 已提交
13

mysterywolf's avatar
update  
mysterywolf 已提交
14
void __rt_libc_exit(int status)
mysterywolf's avatar
mysterywolf 已提交
15 16 17 18 19 20 21 22 23 24 25 26
{
    rt_thread_t self = rt_thread_self();

#ifdef RT_USING_MODULE
    if (dlmodule_self())
    {
        dlmodule_exit(status);
    }
#endif

    if (self != RT_NULL)
    {
mysterywolf's avatar
update  
mysterywolf 已提交
27
        if(status == EXIT_FAILURE) /* abort() */
mysterywolf's avatar
mysterywolf 已提交
28
        {
mysterywolf's avatar
update  
mysterywolf 已提交
29
            rt_kprintf("thread:%s abort!\n", self->name);
mysterywolf's avatar
mysterywolf 已提交
30 31 32
        }
        else /* exit() */
        {
mysterywolf's avatar
update  
mysterywolf 已提交
33
            rt_kprintf("thread:%s exit:%d!\n", self->name, status);
mysterywolf's avatar
mysterywolf 已提交
34 35 36 37 38 39
        }
        rt_thread_suspend(self);
        rt_schedule();
    }
}

mysterywolf's avatar
update  
mysterywolf 已提交
40
void __rt_libc_abort(void)
mysterywolf's avatar
mysterywolf 已提交
41
{
mysterywolf's avatar
update  
mysterywolf 已提交
42
    __rt_libc_exit(EXIT_FAILURE);
mysterywolf's avatar
mysterywolf 已提交
43 44
}

mysterywolf's avatar
update  
mysterywolf 已提交
45
int __rt_libc_system(const char *string)
mysterywolf's avatar
mysterywolf 已提交
46 47 48 49
{
    /* TODO */
    return 0;
}