rt-thread/components/libc/compilers/dlib/syscall_write.c

55 lines
1.0 KiB
C
Raw Normal View History

2015-01-31 11:13:50 +08:00
/*
2018-10-14 19:28:18 +08:00
* Copyright (c) 2006-2018, RT-Thread Development Team
2015-01-31 11:13:50 +08:00
*
2018-10-14 19:28:18 +08:00
* SPDX-License-Identifier: Apache-2.0
2015-01-31 11:13:50 +08:00
*
* Change Logs:
* Date Author Notes
* 2015-01-28 Bernard first version
*/
#include <rtthread.h>
#ifdef RT_USING_DFS
#include <dfs_posix.h>
#endif
2015-01-31 11:13:50 +08:00
#include <yfuns.h>
#include "libc.h"
2015-01-31 11:13:50 +08:00
#pragma module_name = "?__write"
size_t __write(int handle, const unsigned char *buf, size_t len)
{
#ifdef RT_USING_DFS
int size;
#endif
if ((handle == _LLIO_STDOUT) || (handle == _LLIO_STDERR))
{
#ifndef RT_USING_CONSOLE
return _LLIO_ERROR;
#else
#ifdef RT_USING_POSIX
return libc_stdio_write((void*)buf, len);
#else
2015-01-31 11:13:50 +08:00
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;
#endif
2015-01-31 11:13:50 +08:00
#endif
}
if (handle == _LLIO_STDIN) return _LLIO_ERROR;
2015-01-31 11:13:50 +08:00
#ifndef RT_USING_DFS
return _LLIO_ERROR;
#else
size = write(handle, buf, len);
2015-01-31 11:13:50 +08:00
return size;
#endif
}