From 84cf9ce9ffa3d538b367f74c8206b8ef894d466f Mon Sep 17 00:00:00 2001 From: gdisirio Date: Sun, 15 Nov 2009 08:52:17 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1299 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/various/syscalls.c | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) (limited to 'os/various') diff --git a/os/various/syscalls.c b/os/various/syscalls.c index 258d9c9d6..e635b1388 100644 --- a/os/various/syscalls.c +++ b/os/various/syscalls.c @@ -63,18 +63,31 @@ #include #include +#if defined(STDOUT_SD) || defined(STDIN_SD) +#include +#endif /***************************************************************************/ int _read_r(struct _reent *r, int file, char * ptr, int len) { (void)r; +#if defined(STDIN_SD) + if (!len || (file != 0)) { + errno = EINVAL; + return -1; + } + *ptr++ = chIOGet(&STDOUT_SD); + if (--len > 0) + len = chIORead(&STDOUT_SD, (uint8_t *)ptr, (size_t)len); + return len; +#else (void)file; (void)ptr; (void)len; - errno = EINVAL; return -1; +#endif } /***************************************************************************/ @@ -93,10 +106,20 @@ int _lseek_r(struct _reent *r, int file, int ptr, int dir) int _write_r(struct _reent *r, int file, char * ptr, int len) { + int n; + (void)r; (void)file; (void)ptr; - +#if defined(STDOUT_SD) + if (file != 1) { + errno = EINVAL; + return -1; + } + n = len; + while (n--) + chIOPut(&STDOUT_SD, *ptr++); +#endif return len; } -- cgit v1.2.3