From a6f06d24cfec32dddee27a1ce61920fc4007d68a Mon Sep 17 00:00:00 2001 From: "bernard.xiong" Date: Fri, 22 Oct 2010 10:20:38 +0000 Subject: [PATCH] add stdin, stdout, stderr implementation in newlib. git-svn-id: https://rt-thread.googlecode.com/svn/trunk@1029 bbd45198-f89e-11dd-88c7-29a3b14d5316 --- components/libc/newlib/libc.c | 20 ++++++++++++++++++++ components/libc/newlib/libc.h | 6 ++++++ components/libc/newlib/syscalls.c | 17 +++++++++++++++++ 3 files changed, 43 insertions(+) create mode 100644 components/libc/newlib/libc.c create mode 100644 components/libc/newlib/libc.h diff --git a/components/libc/newlib/libc.c b/components/libc/newlib/libc.c new file mode 100644 index 0000000000..1f8d7221f0 --- /dev/null +++ b/components/libc/newlib/libc.c @@ -0,0 +1,20 @@ +#include +#include +#include +#include + +void libc_system_init(const char* tty_name) +{ + int fd; + + /* init console device */ + rt_console_init(tty_name); + + /* open console as stdin/stdout/stderr */ + fd = open("/dev/console", O_RDONLY, 0); /* for stdin */ + rt_kprintf("stdin: %d\n", fd); + fd = open("/dev/console", O_WRONLY, 0); /* for stdout */ + rt_kprintf("stdout: %d\n", fd); + fd = open("/dev/console", O_WRONLY, 0); /* for stderr */ + rt_kprintf("stderr: %d\n", fd); +} diff --git a/components/libc/newlib/libc.h b/components/libc/newlib/libc.h new file mode 100644 index 0000000000..b21a7264b3 --- /dev/null +++ b/components/libc/newlib/libc.h @@ -0,0 +1,6 @@ +#ifndef __RTT_LIBC_H__ +#define __RTT_LIBC_H__ + +void libc_system_init(const char* tty_name); + +#endif diff --git a/components/libc/newlib/syscalls.c b/components/libc/newlib/syscalls.c index 3625f2d234..93d96fe165 100644 --- a/components/libc/newlib/syscalls.c +++ b/components/libc/newlib/syscalls.c @@ -51,6 +51,8 @@ _getpid_r(struct _reent *ptr) int _isatty_r(struct _reent *ptr, int fd) { + if (fd >=0 && fd < 3) return 1; + /* return "not supported" */ ptr->_errno = ENOTSUP; return -1; @@ -198,3 +200,18 @@ _free_r (struct _reent *ptr, void *addr) { rt_free (addr); } + +#ifdef RT_USING_FINSH +#include +#include +#include +#include +void nltest() +{ + printf("stdout test!!\n"); + fprintf(stdout, "fprintf test!!\n"); + fprintf(stderr, "fprintf test!!\n"); +} +FINSH_FUNCTION_EXPORT(nltest, newlib test); +#endif + -- GitLab