From 19ef11201620038724b9ce0c464f63713134fc2b Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Sun, 21 Feb 2021 18:20:45 +0800 Subject: [PATCH] improve and beautify syscalls --- components/libc/compilers/armlibc/sys/types.h | 4 +- components/libc/compilers/dlib/sys/types.h | 4 +- components/libc/compilers/newlib/syscalls.c | 57 ++++++++++++------- 3 files changed, 42 insertions(+), 23 deletions(-) diff --git a/components/libc/compilers/armlibc/sys/types.h b/components/libc/compilers/armlibc/sys/types.h index 78fee1bb99..d1e457b36f 100644 --- a/components/libc/compilers/armlibc/sys/types.h +++ b/components/libc/compilers/armlibc/sys/types.h @@ -15,7 +15,9 @@ typedef int32_t clockid_t; typedef int32_t key_t; /* Used for interprocess communication. */ -typedef int32_t pid_t; /* Used for process IDs and process group IDs. */ +typedef int pid_t; /* Used for process IDs and process group IDs. */ +typedef unsigned short uid_t; +typedef unsigned short gid_t; #ifndef ARCH_CPU_64BIT typedef signed int ssize_t; /* Used for a count of bytes or an error indication. */ #else diff --git a/components/libc/compilers/dlib/sys/types.h b/components/libc/compilers/dlib/sys/types.h index 7dbeddcaa9..3af15ba251 100644 --- a/components/libc/compilers/dlib/sys/types.h +++ b/components/libc/compilers/dlib/sys/types.h @@ -14,7 +14,9 @@ typedef int32_t clockid_t; typedef int32_t key_t; /* Used for interprocess communication. */ -typedef int32_t pid_t; /* Used for process IDs and process group IDs. */ +typedef int pid_t; /* Used for process IDs and process group IDs. */ +typedef unsigned short uid_t; +typedef unsigned short gid_t; #ifndef ARCH_CPU_64BIT typedef signed int ssize_t; /* Used for a count of bytes or an error indication. */ #else diff --git a/components/libc/compilers/newlib/syscalls.c b/components/libc/compilers/newlib/syscalls.c index aee8ac360d..d751ab17b8 100644 --- a/components/libc/compilers/newlib/syscalls.c +++ b/components/libc/compilers/newlib/syscalls.c @@ -7,12 +7,13 @@ * Date Author Notes * 2021-02-11 Meco Man remove _gettimeofday_r() and _times_r() * 2020-02-13 Meco Man re-implement exit() and abort() + * 2020-02-21 Meco Man improve and beautify syscalls */ #include -#include -#include +#include #include +#include #include @@ -38,7 +39,9 @@ int _close_r(struct _reent *ptr, int fd) { #ifndef RT_USING_DFS - return 0; + /* return "not supported" */ + ptr->_errno = ENOTSUP; + return -1; #else return close(fd); #endif @@ -85,11 +88,11 @@ _getpid_r(struct _reent *ptr) int _isatty_r(struct _reent *ptr, int fd) { - if (fd >=0 && fd < 3) return 1; + if (fd >=0 && fd < 3) + return 1; - /* return "not supported" */ - ptr->_errno = ENOTSUP; - return -1; + ptr->_errno = ENOTTY ; + return 0; } int @@ -112,7 +115,9 @@ _off_t _lseek_r(struct _reent *ptr, int fd, _off_t pos, int whence) { #ifndef RT_USING_DFS - return 0; + /* return "not supported" */ + ptr->_errno = ENOTSUP; + return -1; #else _off_t rc; @@ -125,7 +130,9 @@ int _mkdir_r(struct _reent *ptr, const char *name, int mode) { #ifndef RT_USING_DFS - return 0; + /* return "not supported" */ + ptr->_errno = ENOTSUP; + return -1; #else int rc; @@ -138,7 +145,9 @@ int _open_r(struct _reent *ptr, const char *file, int flags, int mode) { #ifndef RT_USING_DFS - return 0; + /* return "not supported" */ + ptr->_errno = ENOTSUP; + return -1; #else int rc; @@ -151,7 +160,9 @@ _ssize_t _read_r(struct _reent *ptr, int fd, void *buf, size_t nbytes) { #ifndef RT_USING_DFS - return 0; + /* return "not supported" */ + ptr->_errno = ENOTSUP; + return -1; #else _ssize_t rc; @@ -164,7 +175,9 @@ int _rename_r(struct _reent *ptr, const char *old, const char *new) { #ifndef RT_USING_DFS - return 0; + /* return "not supported" */ + ptr->_errno = ENOTSUP; + return -1; #else int rc; @@ -184,7 +197,9 @@ int _stat_r(struct _reent *ptr, const char *file, struct stat *pstat) { #ifndef RT_USING_DFS - return 0; + /* return "not supported" */ + ptr->_errno = ENOTSUP; + return -1; #else int rc; @@ -197,6 +212,8 @@ int _unlink_r(struct _reent *ptr, const char *file) { #ifndef RT_USING_DFS + /* return "not supported" */ + ptr->_errno = ENOTSUP; return -1; #else return unlink(file); @@ -211,11 +228,11 @@ _wait_r(struct _reent *ptr, int *status) return -1; } -#ifdef RT_USING_DEVICE _ssize_t _write_r(struct _reent *ptr, int fd, const void *buf, size_t nbytes) { #ifndef RT_USING_DFS +#ifdef RT_USING_DEVICE if (fileno(stdout) == fd) { rt_device_t console; @@ -225,7 +242,11 @@ _write_r(struct _reent *ptr, int fd, const void *buf, size_t nbytes) } return 0; - +#else + /* return "not supported" */ + ptr->_errno = ENOTSUP; + return -1; +#endif /*RT_USING_DEVICE*/ #else _ssize_t rc; @@ -233,7 +254,6 @@ _write_r(struct _reent *ptr, int fd, const void *buf, size_t nbytes) return rc; #endif } -#endif /* Memory routine */ void * @@ -304,11 +324,6 @@ void __libc_init_array(void) /* we not use __libc init_aray to initialize C++ objects */ } -uid_t getuid(void) -{ - return 0; -} - mode_t umask(mode_t mask) { return 022;