summaryrefslogtreecommitdiff
path: root/components/libc
diff options
context:
space:
mode:
authorMeco Man <[email protected]>2021-11-07 21:40:19 -0500
committerMeco Man <[email protected]>2021-11-07 23:41:16 -0500
commitf8388c572ef9969105b895cba3c55ba8d24efeda (patch)
treeae71b5dace91c0217740a80eb8a7d99133f1e088 /components/libc
parent251e17b41ac56a877e0278394588aa6b129b66b1 (diff)
add RT_USING_POSIX_STDIO
Diffstat (limited to 'components/libc')
-rw-r--r--components/libc/Kconfig5
-rw-r--r--components/libc/compilers/armlibc/syscalls.c14
-rw-r--r--components/libc/compilers/dlib/syscall_read.c4
-rw-r--r--components/libc/compilers/dlib/syscall_write.c4
-rw-r--r--components/libc/compilers/gcc/newlib/syscalls.c6
-rw-r--r--components/libc/posix/src/SConscript5
6 files changed, 23 insertions, 15 deletions
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 <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 */
}
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 <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)
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 <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");
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 <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)
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']