Browse Source

add RT_USING_POSIX_STDIO

Meco Man 3 years ago
parent
commit
f8388c572e

+ 1 - 1
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"

+ 4 - 4
components/dfs/src/dfs.c

@@ -18,9 +18,9 @@
 #include <lwp.h>
 #endif
 
-#ifdef RT_USING_POSIX
+#ifdef RT_USING_POSIX_STDIO
 #include <libc.h>
-#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;

+ 6 - 6
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 */

+ 1 - 1
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
 

+ 4 - 1
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()"

+ 7 - 7
components/libc/compilers/armlibc/syscalls.c

@@ -21,7 +21,7 @@
 #include <fcntl.h>
 #include <unistd.h>
 #include <sys/stat.h>
-#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 */
 }
 

+ 2 - 2
components/libc/compilers/dlib/syscall_read.c

@@ -11,7 +11,7 @@
 #include <rtthread.h>
 #include <yfuns.h>
 #include <unistd.h>
-#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)

+ 2 - 2
components/libc/compilers/dlib/syscall_write.c

@@ -11,7 +11,7 @@
 #include <rtthread.h>
 #include <yfuns.h>
 #include <unistd.h>
-#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");

+ 4 - 2
components/libc/compilers/gcc/newlib/syscalls.c

@@ -20,7 +20,7 @@
 #include <unistd.h>
 #include <sys/errno.h>
 #include <sys/stat.h>
-#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)

+ 4 - 1
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']
 

+ 0 - 7
include/rtdebug.h

@@ -12,13 +12,6 @@
 
 #include <rtconfig.h>
 
-/* 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