From f8388c572ef9969105b895cba3c55ba8d24efeda Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Sun, 7 Nov 2021 21:40:19 -0500 Subject: [PATCH] add RT_USING_POSIX_STDIO --- components/dfs/Kconfig | 2 +- components/dfs/src/dfs.c | 8 ++++---- components/finsh/shell.c | 12 ++++++------ components/finsh/shell.h | 2 +- components/libc/Kconfig | 5 ++++- components/libc/compilers/armlibc/syscalls.c | 14 +++++++------- components/libc/compilers/dlib/syscall_read.c | 4 ++-- components/libc/compilers/dlib/syscall_write.c | 4 ++-- components/libc/compilers/gcc/newlib/syscalls.c | 6 ++++-- components/libc/posix/src/SConscript | 5 ++++- include/rtdebug.h | 7 ------- 11 files changed, 35 insertions(+), 34 deletions(-) diff --git a/components/dfs/Kconfig b/components/dfs/Kconfig index 7a4fbb655d..1ec36784d7 100644 --- a/components/dfs/Kconfig +++ b/components/dfs/Kconfig @@ -133,7 +133,7 @@ if RT_USING_DFS config RT_USING_DFS_DEVFS bool "Using devfs for device objects" - default y + default n config RT_USING_DFS_ROMFS bool "Enable ReadOnly file system on flash" diff --git a/components/dfs/src/dfs.c b/components/dfs/src/dfs.c index ed8d8094aa..29b2068a6c 100644 --- a/components/dfs/src/dfs.c +++ b/components/dfs/src/dfs.c @@ -18,9 +18,9 @@ #include #endif -#ifdef RT_USING_POSIX +#ifdef RT_USING_POSIX_STDIO #include -#endif /* RT_USING_POSIX */ +#endif /* RT_USING_POSIX_STDIO */ /* Global variables */ const struct dfs_filesystem_ops *filesystem_operation_table[DFS_FILESYSTEM_TYPES_MAX]; @@ -216,10 +216,10 @@ struct dfs_fd *fd_get(int fd) struct dfs_fd *d; struct dfs_fdtable *fdt; -#ifdef RT_USING_POSIX +#ifdef RT_USING_POSIX_STDIO if ((0 <= fd) && (fd <= 2)) fd = libc_stdio_get_console(); -#endif /* RT_USING_POSIX */ +#endif /* RT_USING_POSIX_STDIO */ fdt = dfs_fdtable_get(); fd = fd - DFS_FD_OFFSET; diff --git a/components/finsh/shell.c b/components/finsh/shell.c index 6938ed1f24..c2f6e2a550 100644 --- a/components/finsh/shell.c +++ b/components/finsh/shell.c @@ -146,7 +146,7 @@ int finsh_getchar(void) { #ifdef RT_USING_DEVICE char ch = 0; -#ifdef RT_USING_POSIX +#ifdef RT_USING_POSIX_STDIO if(read(STDIN_FILENO, &ch, 1) > 0) { return ch; @@ -170,14 +170,14 @@ int finsh_getchar(void) rt_sem_take(&shell->rx_sem, RT_WAITING_FOREVER); return ch; -#endif /* RT_USING_POSIX */ +#endif /* RT_USING_POSIX_STDIO */ #else extern char rt_hw_console_getchar(void); return rt_hw_console_getchar(); #endif /* RT_USING_DEVICE */ } -#if !defined(RT_USING_POSIX) && defined(RT_USING_DEVICE) +#if !defined(RT_USING_POSIX_STDIO) && defined(RT_USING_DEVICE) static rt_err_t finsh_rx_ind(rt_device_t dev, rt_size_t size) { RT_ASSERT(shell != RT_NULL); @@ -241,7 +241,7 @@ const char *finsh_get_device() RT_ASSERT(shell != RT_NULL); return shell->device->parent.name; } -#endif +#endif /* !defined(RT_USING_POSIX_STDIO) && defined(RT_USING_DEVICE) */ /** * @ingroup finsh @@ -443,7 +443,7 @@ void finsh_thread_entry(void *parameter) shell->echo_mode = 0; #endif -#if !defined(RT_USING_POSIX) && defined(RT_USING_DEVICE) +#if !defined(RT_USING_POSIX_STDIO) && defined(RT_USING_DEVICE) /* set console device as shell device */ if (shell->device == RT_NULL) { @@ -453,7 +453,7 @@ void finsh_thread_entry(void *parameter) finsh_set_device(console->parent.name); } } -#endif +#endif /* !defined(RT_USING_POSIX_STDIO) && defined(RT_USING_DEVICE) */ #ifdef FINSH_USING_AUTH /* set the default password when the password isn't setting */ diff --git a/components/finsh/shell.h b/components/finsh/shell.h index 985d3b3fbd..d421f60374 100644 --- a/components/finsh/shell.h +++ b/components/finsh/shell.h @@ -78,7 +78,7 @@ struct finsh_shell rt_uint16_t line_position; rt_uint16_t line_curpos; -#if !defined(RT_USING_POSIX) && defined(RT_USING_DEVICE) +#if !defined(RT_USING_POSIX_STDIO) && defined(RT_USING_DEVICE) rt_device_t device; #endif diff --git a/components/libc/Kconfig b/components/libc/Kconfig index d10c0afd6a..9b30357848 100644 --- a/components/libc/Kconfig +++ b/components/libc/Kconfig @@ -39,10 +39,13 @@ config RT_LIBC_DEFAULT_TIMEZONE config RT_USING_POSIX bool "Enable basic POSIX layer, open/read/write/close etc" select RT_USING_DFS - select RT_USING_DFS_DEVFS default n if RT_USING_POSIX + config RT_USING_POSIX_STDIO + bool "Enable standard IO" + select RT_USING_DFS_DEVFS + default n config RT_USING_POSIX_POLL bool "Enable poll()" diff --git a/components/libc/compilers/armlibc/syscalls.c b/components/libc/compilers/armlibc/syscalls.c index 755ffef1a6..62657a4b64 100644 --- a/components/libc/compilers/armlibc/syscalls.c +++ b/components/libc/compilers/armlibc/syscalls.c @@ -21,7 +21,7 @@ #include #include #include -#ifdef RT_USING_POSIX +#ifdef RT_USING_POSIX_STDIO #include "libc.h" #endif @@ -144,7 +144,7 @@ int _sys_close(FILEHANDLE fh) */ int _sys_read(FILEHANDLE fh, unsigned char *buf, unsigned len, int mode) { -#ifdef RT_USING_POSIX +#ifdef RT_USING_POSIX_STDIO int size; if (fh == STDIN) @@ -169,7 +169,7 @@ int _sys_read(FILEHANDLE fh, unsigned char *buf, unsigned len, int mode) return 0; /* error */ #else return 0; /* error */ -#endif /* RT_USING_POSIX */ +#endif /* RT_USING_POSIX_STDIO */ } /* @@ -185,7 +185,7 @@ int _sys_write(FILEHANDLE fh, const unsigned char *buf, unsigned len, int mode) if ((fh == STDOUT) || (fh == STDERR)) { -#ifdef RT_USING_POSIX +#ifdef RT_USING_POSIX_STDIO if (libc_stdio_get_console() < 0) { LOG_W("Do not invoke standard input before initializing libc"); @@ -200,7 +200,7 @@ int _sys_write(FILEHANDLE fh, const unsigned char *buf, unsigned len, int mode) } return 0; /* error */ -#endif /* RT_USING_POSIX */ +#endif /* RT_USING_POSIX_STDIO */ } else if (fh == STDIN) { @@ -325,7 +325,7 @@ int fputc(int c, FILE *f) int fgetc(FILE *f) { -#ifdef RT_USING_POSIX +#ifdef RT_USING_POSIX_STDIO char ch; if (libc_stdio_get_console() < 0) @@ -336,7 +336,7 @@ int fgetc(FILE *f) if(read(STDIN_FILENO, &ch, 1) == 1) return ch; -#endif /* RT_USING_POSIX */ +#endif /* RT_USING_POSIX_STDIO */ return 0; /* error */ } diff --git a/components/libc/compilers/dlib/syscall_read.c b/components/libc/compilers/dlib/syscall_read.c index 74cedb966a..c926c577b5 100644 --- a/components/libc/compilers/dlib/syscall_read.c +++ b/components/libc/compilers/dlib/syscall_read.c @@ -11,7 +11,7 @@ #include #include #include -#ifdef RT_USING_POSIX +#ifdef RT_USING_POSIX_STDIO #include "libc.h" #endif @@ -22,7 +22,7 @@ #pragma module_name = "?__read" size_t __read(int handle, unsigned char *buf, size_t len) { -#ifdef RT_USING_POSIX +#ifdef RT_USING_POSIX_STDIO int size; if (handle == _LLIO_STDIN) diff --git a/components/libc/compilers/dlib/syscall_write.c b/components/libc/compilers/dlib/syscall_write.c index ab011c1096..72bac6ba49 100644 --- a/components/libc/compilers/dlib/syscall_write.c +++ b/components/libc/compilers/dlib/syscall_write.c @@ -11,7 +11,7 @@ #include #include #include -#ifdef RT_USING_POSIX +#ifdef RT_USING_POSIX_STDIO #include "libc.h" #endif @@ -29,7 +29,7 @@ size_t __write(int handle, const unsigned char *buf, size_t len) if ((handle == _LLIO_STDOUT) || (handle == _LLIO_STDERR)) { -#ifdef RT_USING_POSIX +#ifdef RT_USING_POSIX_STDIO if (libc_stdio_get_console() < 0) { LOG_W("Do not invoke standard output before initializing libc"); diff --git a/components/libc/compilers/gcc/newlib/syscalls.c b/components/libc/compilers/gcc/newlib/syscalls.c index f95e695a85..e957aaf003 100644 --- a/components/libc/compilers/gcc/newlib/syscalls.c +++ b/components/libc/compilers/gcc/newlib/syscalls.c @@ -20,7 +20,7 @@ #include #include #include -#ifdef RT_USING_POSIX +#ifdef RT_USING_POSIX_STDIO #include "libc.h" #endif #ifdef RT_USING_MODULE @@ -216,7 +216,7 @@ int _open_r(struct _reent *ptr, const char *file, int flags, int mode) _ssize_t _read_r(struct _reent *ptr, int fd, void *buf, size_t nbytes) { -#ifdef RT_USING_POSIX +#ifdef RT_USING_POSIX_STDIO _ssize_t rc; if (libc_stdio_get_console() < 0 && fd == STDIN_FILENO) { @@ -271,11 +271,13 @@ _ssize_t _write_r(struct _reent *ptr, int fd, const void *buf, size_t nbytes) { #ifdef RT_USING_POSIX _ssize_t rc; +#ifdef RT_USING_POSIX_STDIO if (libc_stdio_get_console() < 0 && fd == STDOUT_FILENO) { LOG_W("Do not invoke standard output before initializing libc"); return 0; } +#endif /* RT_USING_POSIX_STDIO */ rc = write(fd, buf, nbytes); return rc; #elif defined(RT_USING_CONSOLE) diff --git a/components/libc/posix/src/SConscript b/components/libc/posix/src/SConscript index 4c6d3e3b7b..24c4ede4e1 100644 --- a/components/libc/posix/src/SConscript +++ b/components/libc/posix/src/SConscript @@ -2,10 +2,13 @@ from building import * -src = ['libc.c', 'unistd.c'] +src = ['unistd.c'] cwd = GetCurrentDir() CPPPATH = [cwd] +if GetDepend('RT_USING_POSIX_STDIO'): + src += ['libc.c'] + if GetDepend('RT_USING_POSIX_POLL'): src += ['poll.c'] diff --git a/include/rtdebug.h b/include/rtdebug.h index c170d148c1..0858a5bbf1 100644 --- a/include/rtdebug.h +++ b/include/rtdebug.h @@ -12,13 +12,6 @@ #include -/* settings depend check */ -#ifdef RT_USING_POSIX -#if !defined(RT_USING_DFS) || !defined(RT_USING_DFS_DEVFS) -#error "POSIX poll/select, stdin need file system(RT_USING_DFS) and device file system(RT_USING_DFS_DEVFS)" -#endif -#endif /* RT_USING_POSIX */ - /* Using this macro to control all kernel debug features. */ #ifdef RT_DEBUG