提交 c8c63251 编写于 作者: mysterywolf's avatar mysterywolf

[libc][syscall]移除libc_stdio_read/write函数,优化syscall

上级 13b0b60b
......@@ -10,17 +10,14 @@
#ifndef __RTT_LIBC_H__
#define __RTT_LIBC_H__
#include <stddef.h>
#ifdef __cplusplus
extern "C" {
#endif
int libc_system_init(void);
int libc_stdio_set_console(const char* device_name, int mode);
int libc_system_init(void);
int libc_stdio_get_console(void);
int libc_stdio_read(void* buffer, size_t size);
int libc_stdio_write(const void* buffer, size_t size);
int libc_stdio_set_console(const char* device_name, int mode);
#ifdef __cplusplus
}
#endif
......
......@@ -21,6 +21,7 @@
#define STDIO_DEVICE_NAME_MAX 32
static int std_fd = -1;
int libc_stdio_set_console(const char* device_name, int mode)
{
int fd;
......@@ -47,29 +48,4 @@ int libc_stdio_get_console(void)
return std_fd;
}
int libc_stdio_read(void *buffer, size_t size)
{
if (std_fd >= 0)
{
return read(std_fd, buffer, size);
}
else
{
rt_kprintf("Illegal stdio input!\n");
return 0;
}
}
int libc_stdio_write(const void *buffer, size_t size)
{
if (std_fd >= 0)
{
return write(std_fd, buffer, size);
}
else
{
rt_kprintf("Illegal stdio output!\n");
return size;
}
}
#endif
......@@ -146,16 +146,17 @@ int _sys_read(FILEHANDLE fh, unsigned char *buf, unsigned len, int mode)
if (fh == STDIN)
{
#ifdef RT_USING_POSIX
size = libc_stdio_read(buf, len);
size = read(STDIN_FILENO, buf, len);
return len - size;
#else
/* no stdin */
return -1;
#endif
}
if ((fh == STDOUT) || (fh == STDERR))
else if ((fh == STDOUT) || (fh == STDERR))
{
return -1;
}
#ifndef RT_USING_DFS
return 0;
......@@ -185,7 +186,7 @@ int _sys_write(FILEHANDLE fh, const unsigned char *buf, unsigned len, int mode)
return 0;
#else
#ifdef RT_USING_POSIX
size = libc_stdio_write(buf, len);
size = write(STDOUT_FILENO, buf, len);
return len - size;
#else
if (rt_console_get_device())
......@@ -198,8 +199,10 @@ int _sys_write(FILEHANDLE fh, const unsigned char *buf, unsigned len, int mode)
#endif
#endif
}
if (fh == STDIN) return -1;
else if (fh == STDIN)
{
return -1;
}
#ifndef RT_USING_DFS
return 0;
......
......@@ -11,17 +11,14 @@
#ifndef __RTT_LIBC_H__
#define __RTT_LIBC_H__
#include <stddef.h>
#ifdef __cplusplus
extern "C" {
#endif
int libc_system_init(void);
int libc_stdio_set_console(const char* device_name, int mode);
int libc_system_init(void);
int libc_stdio_get_console(void);
int libc_stdio_read(void* buffer, size_t size);
int libc_stdio_write(const void* buffer, size_t size);
int libc_stdio_set_console(const char* device_name, int mode);
#ifdef __cplusplus
}
#endif
......
......@@ -46,13 +46,4 @@ int libc_stdio_get_console(void) {
return std_fd;
}
int libc_stdio_read(void *buffer, size_t size)
{
return read(std_fd, buffer, size);
}
int libc_stdio_write(const void *buffer, size_t size)
{
return write(std_fd, buffer, size);
}
#endif
......@@ -25,14 +25,15 @@ size_t __read(int handle, unsigned char *buf, size_t len)
if (handle == _LLIO_STDIN)
{
#ifdef RT_USING_POSIX
return libc_stdio_read(buf, len);
return read(STDIN_FILENO, buf, len);
#else
return _LLIO_ERROR;
#endif
}
if ((handle == _LLIO_STDOUT) || (handle == _LLIO_STDERR))
else if ((handle == _LLIO_STDOUT) || (handle == _LLIO_STDERR))
{
return _LLIO_ERROR;
}
#ifndef RT_USING_DFS
return _LLIO_ERROR;
......
......@@ -30,19 +30,24 @@ size_t __write(int handle, const unsigned char *buf, size_t len)
#else
#ifdef RT_USING_POSIX
return libc_stdio_write((void*)buf, len);
return write(STDOUT_FILENO, (void*)buf, len);
#else
rt_device_t console_device;
console_device = rt_console_get_device();
if (console_device != 0) rt_device_write(console_device, 0, buf, len);
if (console_device != 0)
{
rt_device_write(console_device, 0, buf, len);
}
return len;
#endif
#endif
}
if (handle == _LLIO_STDIN) return _LLIO_ERROR;
else if (handle == _LLIO_STDIN)
{
return _LLIO_ERROR;
}
#ifndef RT_USING_DFS
return _LLIO_ERROR;
......
......@@ -18,8 +18,8 @@
extern "C" {
#endif
int libc_system_init(void);
int libc_stdio_set_console(const char* device_name, int mode);
int libc_stdio_get_console(void);
int libc_stdio_set_console(const char* device_name, int mode);
#ifdef __cplusplus
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册