| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 | /* * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date           Author       Notes * 2015-01-28     Bernard      first version */#include <rtthread.h>#include <yfuns.h>#include <unistd.h>#include "libc.h"#define DBG_TAG    "dlib.syscall_write"#define DBG_LVL    DBG_INFO#include <rtdbg.h>#pragma module_name = "?__write"size_t __write(int handle, const unsigned char *buf, size_t len){#ifdef RT_LIBC_USING_FILEIO    int size;#endif /* RT_LIBC_USING_FILEIO */    if ((handle == _LLIO_STDOUT) || (handle == _LLIO_STDERR))    {#ifdef RT_LIBC_USING_FILEIO        if (libc_stdio_get_console() < 0)        {            LOG_W("Do not invoke standard output before initializing libc");            return 0;        }        return write(STDOUT_FILENO, (void*)buf, len);#elif defined(RT_USING_CONSOLE)        rt_device_t console_device;        console_device = rt_console_get_device();        if (console_device != 0)        {            rt_device_write(console_device, 0, buf, len);        }        return len;#else        return _LLIO_ERROR;#endif /* RT_LIBC_USING_FILEIO */    }    else if (handle == _LLIO_STDIN)    {        return _LLIO_ERROR;    }#ifdef RT_LIBC_USING_FILEIO    size = write(handle, buf, len);    return size;#else    return _LLIO_ERROR;#endif /* RT_LIBC_USING_FILEIO */}
 |