diff --git a/components/libc/compilers/armlibc/syscalls.c b/components/libc/compilers/armlibc/syscalls.c index 62657a4b64..c8609a92f3 100644 --- a/components/libc/compilers/armlibc/syscalls.c +++ b/components/libc/compilers/armlibc/syscalls.c @@ -25,7 +25,7 @@ #include "libc.h" #endif -#define DBG_TAG "armlibc.syscalls" +#define DBG_TAG "Keil.armlibc.syscalls" #define DBG_LVL DBG_INFO #include @@ -144,38 +144,48 @@ int _sys_close(FILEHANDLE fh) */ int _sys_read(FILEHANDLE fh, unsigned char *buf, unsigned len, int mode) { -#ifdef RT_USING_POSIX_STDIO +#ifdef RT_USING_POSIX int size; if (fh == STDIN) { +#ifdef RT_USING_POSIX_STDIO if (libc_stdio_get_console() < 0) { LOG_W("Do not invoke standard output before initializing libc"); - return 0; + return 0; /* error, but keep going */ } size = read(STDIN_FILENO, buf, len); - return len - size; + return 0; /* success */ +#else + return 0; /* error */ +#endif } - else if ((fh == STDOUT) || (fh == STDERR)) + else if (fh == STDOUT || fh == STDERR) { return 0; /* error */ } - - size = read(fh, buf, len); - if (size >= 0) - return len - size; else - return 0; /* error */ + { + size = read(fh, buf, len); + if (size >= 0) + return len - size; /* success */ + else + return 0; /* error */ + } #else return 0; /* error */ -#endif /* RT_USING_POSIX_STDIO */ +#endif /* RT_USING_POSIX */ } /* * Write to a file. Returns 0 on success, negative on error, and * the number of characters _not_ written on partial success. * `mode' exists for historical reasons and must be ignored. + * The return value is either: + * A positive number representing the number of characters not written + * (so any nonzero return value denotes a failure of some sort). + * A negative number indicating an error. */ int _sys_write(FILEHANDLE fh, const unsigned char *buf, unsigned len, int mode) { @@ -183,39 +193,36 @@ int _sys_write(FILEHANDLE fh, const unsigned char *buf, unsigned len, int mode) int size; #endif /* RT_USING_POSIX */ - if ((fh == STDOUT) || (fh == STDERR)) + if (fh == STDOUT || fh == STDERR) { -#ifdef RT_USING_POSIX_STDIO - if (libc_stdio_get_console() < 0) +#ifdef RT_USING_CONSOLE + rt_device_t console; + console = rt_console_get_device(); + if (console) { - LOG_W("Do not invoke standard input before initializing libc"); - return 0; + rt_device_write(console, -1, buf, len); } - size = write(STDOUT_FILENO, buf, len); - return len - size; -#elif defined(RT_USING_CONSOLE) - if (rt_console_get_device()) - { - rt_device_write(rt_console_get_device(), -1, buf, len); - } - + return 0; /* success */ +#else return 0; /* error */ -#endif /* RT_USING_POSIX_STDIO */ +#endif /* RT_USING_CONSOLE */ } else if (fh == STDIN) { return 0; /* error */ } - -#ifdef RT_USING_POSIX - size = write(fh, buf, len); - if (size >= 0) - return len - size; else - return 0; /* error */ + { +#ifdef RT_USING_POSIX + size = write(fh, buf, len); + if (size >= 0) + return 0; /* success */ + else + return 0; /* error */ #else - return 0; + return 0; /* error */ #endif /* RT_USING_POSIX */ + } } /* diff --git a/components/libc/compilers/dlib/syscall_close.c b/components/libc/compilers/dlib/syscall_close.c index 2897c2418a..2d14510490 100644 --- a/components/libc/compilers/dlib/syscall_close.c +++ b/components/libc/compilers/dlib/syscall_close.c @@ -8,7 +8,7 @@ * 2015-01-28 Bernard first version */ #include -#include +#include #include #pragma module_name = "?__close" diff --git a/components/libc/compilers/dlib/syscall_lseek.c b/components/libc/compilers/dlib/syscall_lseek.c index 4ea55ef1c3..07ebfca2e9 100644 --- a/components/libc/compilers/dlib/syscall_lseek.c +++ b/components/libc/compilers/dlib/syscall_lseek.c @@ -8,7 +8,7 @@ * 2015-01-28 Bernard first version */ #include -#include +#include #include #pragma module_name = "?__lseek" diff --git a/components/libc/compilers/dlib/syscall_open.c b/components/libc/compilers/dlib/syscall_open.c index 8fb3c3a11f..93056ffdbe 100644 --- a/components/libc/compilers/dlib/syscall_open.c +++ b/components/libc/compilers/dlib/syscall_open.c @@ -9,7 +9,7 @@ */ #include -#include +#include #include #pragma module_name = "?__open" diff --git a/components/libc/compilers/dlib/syscall_read.c b/components/libc/compilers/dlib/syscall_read.c index c926c577b5..0df9766df2 100644 --- a/components/libc/compilers/dlib/syscall_read.c +++ b/components/libc/compilers/dlib/syscall_read.c @@ -9,7 +9,7 @@ */ #include -#include +#include #include #ifdef RT_USING_POSIX_STDIO #include "libc.h" @@ -22,17 +22,21 @@ #pragma module_name = "?__read" size_t __read(int handle, unsigned char *buf, size_t len) { -#ifdef RT_USING_POSIX_STDIO +#ifdef RT_USING_POSIX int size; if (handle == _LLIO_STDIN) { +#ifdef RT_USING_POSIX_STDIO if (libc_stdio_get_console() < 0) { LOG_W("Do not invoke standard input before initializing libc"); - return 0; + return 0; /* error, but keep going */ } - return read(STDIN_FILENO, buf, len); + return read(STDIN_FILENO, buf, len); /* return the length of the data read */ +#else + return _LLIO_ERROR; +#endif /* RT_USING_POSIX_STDIO */ } else if ((handle == _LLIO_STDOUT) || (handle == _LLIO_STDERR)) { @@ -40,7 +44,7 @@ size_t __read(int handle, unsigned char *buf, size_t len) } size = read(handle, buf, len); - return size; + return size; /* return the length of the data read */ #else return _LLIO_ERROR; #endif /* RT_USING_POSIX */ diff --git a/components/libc/compilers/dlib/syscall_remove.c b/components/libc/compilers/dlib/syscall_remove.c index 05bfbb67ae..dcb9bf60ec 100644 --- a/components/libc/compilers/dlib/syscall_remove.c +++ b/components/libc/compilers/dlib/syscall_remove.c @@ -8,7 +8,7 @@ * 2015-01-28 Bernard first version */ #include -#include +#include #include #pragma module_name = "?remove" diff --git a/components/libc/compilers/dlib/syscall_write.c b/components/libc/compilers/dlib/syscall_write.c index 72bac6ba49..0f280e1702 100644 --- a/components/libc/compilers/dlib/syscall_write.c +++ b/components/libc/compilers/dlib/syscall_write.c @@ -9,13 +9,13 @@ */ #include -#include +#include #include #ifdef RT_USING_POSIX_STDIO #include "libc.h" #endif -#define DBG_TAG "dlib.syscall_write" +#define DBG_TAG "IAR.dlib.syscall_write" #define DBG_LVL DBG_INFO #include @@ -29,36 +29,31 @@ size_t __write(int handle, const unsigned char *buf, size_t len) if ((handle == _LLIO_STDOUT) || (handle == _LLIO_STDERR)) { -#ifdef RT_USING_POSIX_STDIO - 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) +#ifdef RT_USING_CONSOLE rt_device_t console_device; console_device = rt_console_get_device(); - if (console_device != 0) + if (console_device) { rt_device_write(console_device, 0, buf, len); } - return len; + return len; /* return the length of the data written */ #else return _LLIO_ERROR; -#endif /* RT_USING_POSIX */ +#endif /* RT_USING_CONSOLE */ } else if (handle == _LLIO_STDIN) { return _LLIO_ERROR; } - + else + { #ifdef RT_USING_POSIX - size = write(handle, buf, len); - return size; + size = write(handle, buf, len); + return size; /* return the length of the data written */ #else - return _LLIO_ERROR; + return _LLIO_ERROR; #endif /* RT_USING_POSIX */ + } }