summaryrefslogtreecommitdiff
path: root/components
diff options
context:
space:
mode:
Diffstat (limited to 'components')
-rw-r--r--components/dfs/SConscript4
-rw-r--r--components/dfs/src/dfs.c4
-rw-r--r--components/dfs/src/dfs_file.c5
-rw-r--r--components/finsh/SConscript2
-rw-r--r--components/finsh/finsh.h2
-rw-r--r--components/finsh/msh.c18
-rw-r--r--components/finsh/msh_file.c4
-rw-r--r--components/finsh/shell.c16
-rw-r--r--components/finsh/shell.h2
-rw-r--r--components/libc/Kconfig12
-rw-r--r--components/libc/compilers/common/SConscript7
-rw-r--r--components/libc/compilers/common/readme.md11
-rw-r--r--components/libc/compilers/common/unistd.c119
-rw-r--r--components/libc/posix/aio/SConscript4
-rw-r--r--components/libc/posix/getline/SConscript2
-rw-r--r--components/libc/posix/mmap/SConscript2
-rw-r--r--components/libc/posix/pthreads/SConscript2
-rw-r--r--components/libc/posix/signal/SConscript2
-rw-r--r--components/libc/posix/src/SConscript10
-rw-r--r--components/libc/posix/src/delay.c (renamed from components/libc/compilers/common/delay.c)9
-rw-r--r--components/libc/posix/src/poll.c (renamed from components/dfs/src/dfs_poll.c)5
-rw-r--r--components/libc/posix/src/select.c (renamed from components/dfs/src/dfs_select.c)5
-rw-r--r--components/libc/posix/src/unistd.c (renamed from components/dfs/src/dfs_posix.c)130
-rw-r--r--components/libc/posix/termios/SConscript2
24 files changed, 177 insertions, 202 deletions
diff --git a/components/dfs/SConscript b/components/dfs/SConscript
index e449c84911..5a0b394ce2 100644
--- a/components/dfs/SConscript
+++ b/components/dfs/SConscript
@@ -5,14 +5,10 @@ src = Split('''
src/dfs.c
src/dfs_file.c
src/dfs_fs.c
-src/dfs_posix.c
''')
cwd = GetCurrentDir()
CPPPATH = [cwd + "/include"]
-if GetDepend('RT_USING_POSIX'):
- src += ['src/dfs_poll.c', 'src/dfs_select.c']
-
group = DefineGroup('Filesystem', src, depend = ['RT_USING_DFS'], CPPPATH = CPPPATH)
if GetDepend('RT_USING_DFS'):
diff --git a/components/dfs/src/dfs.c b/components/dfs/src/dfs.c
index 8155b088f0..fa93afd749 100644
--- a/components/dfs/src/dfs.c
+++ b/components/dfs/src/dfs.c
@@ -18,7 +18,7 @@
#include <lwp.h>
#endif
-#if defined(RT_USING_DFS_DEVFS) && defined(RT_USING_POSIX)
+#ifdef RT_USING_LIBC
#include <libc.h>
#endif
@@ -216,7 +216,7 @@ struct dfs_fd *fd_get(int fd)
struct dfs_fd *d;
struct dfs_fdtable *fdt;
-#if defined(RT_USING_DFS_DEVFS) && defined(RT_USING_POSIX)
+#ifdef RT_USING_LIBC
if ((0 <= fd) && (fd <= 2))
fd = libc_stdio_get_console();
#endif
diff --git a/components/dfs/src/dfs_file.c b/components/dfs/src/dfs_file.c
index fa0f6000b4..978c1056c2 100644
--- a/components/dfs/src/dfs_file.c
+++ b/components/dfs/src/dfs_file.c
@@ -621,6 +621,7 @@ void cat(const char *filename)
}
FINSH_FUNCTION_EXPORT(cat, print file);
+#ifdef RT_USING_POSIX
#define BUF_SZ 4096
static void copyfile(const char *src, const char *dst)
{
@@ -749,6 +750,7 @@ static const char *_get_path_lastname(const char *path)
/* skip the '/' then return */
return ++ptr;
}
+
void copy(const char *src, const char *dst)
{
#define FLAG_SRC_TYPE 0x03
@@ -841,7 +843,8 @@ void copy(const char *src, const char *dst)
}
}
FINSH_FUNCTION_EXPORT(copy, copy file or dir)
+#endif /* RT_USING_POSIX */
-#endif
+#endif /* RT_USING_FINSH */
/* @} */
diff --git a/components/finsh/SConscript b/components/finsh/SConscript
index 28fe02bac5..5eabe47c0e 100644
--- a/components/finsh/SConscript
+++ b/components/finsh/SConscript
@@ -9,7 +9,7 @@ msh.c
if GetDepend('MSH_USING_BUILT_IN_COMMANDS'):
src += ['cmd.c']
-if GetDepend('RT_USING_DFS'):
+if GetDepend('RT_USING_POSIX'):
src += ['msh_file.c']
CPPPATH = [cwd]
diff --git a/components/finsh/finsh.h b/components/finsh/finsh.h
index 98048ebad4..f5e4df9e49 100644
--- a/components/finsh/finsh.h
+++ b/components/finsh/finsh.h
@@ -169,7 +169,7 @@ extern struct finsh_syscall *_syscall_table_begin, *_syscall_table_end;
struct finsh_syscall *finsh_syscall_lookup(const char *name);
#ifdef RT_USING_DEVICE
- void finsh_set_device(const char *device_name);
+void finsh_set_device(const char *device_name);
#endif
#endif
diff --git a/components/finsh/msh.c b/components/finsh/msh.c
index 18182ca264..5cb54c26e7 100644
--- a/components/finsh/msh.c
+++ b/components/finsh/msh.c
@@ -21,7 +21,7 @@
#include "msh.h"
#include "shell.h"
-#ifdef RT_USING_DFS
+#ifdef RT_USING_POSIX
#include <dfs_posix.h>
#endif
@@ -186,7 +186,7 @@ static cmd_function_t msh_get_cmd(char *cmd, int size)
return cmd_func;
}
-#if defined(RT_USING_MODULE) && defined(RT_USING_DFS)
+#if defined(RT_USING_MODULE) && defined(RT_USING_POSIX)
/* Return 0 on module executed. Other value indicate error.
*/
int msh_exec_module(const char *cmd_line, int size)
@@ -257,7 +257,7 @@ int msh_exec_module(const char *cmd_line, int size)
rt_free(pg_name);
return ret;
}
-#endif /* defined(RT_USING_MODULE) && defined(RT_USING_DFS) */
+#endif /* defined(RT_USING_MODULE) && defined(RT_USING_POSIX) */
static int _msh_exec_cmd(char *cmd, rt_size_t length, int *retp)
{
@@ -290,7 +290,7 @@ static int _msh_exec_cmd(char *cmd, rt_size_t length, int *retp)
return 0;
}
-#if defined(RT_USING_LWP) && defined(RT_USING_DFS)
+#if defined(RT_USING_LWP) && defined(RT_USING_POSIX)
static int _msh_exec_lwp(char *cmd, rt_size_t length)
{
int argc;
@@ -350,7 +350,7 @@ int msh_exec(char *cmd, rt_size_t length)
{
return cmd_ret;
}
-#ifdef RT_USING_DFS
+#ifdef RT_USING_POSIX
#ifdef DFS_USING_WORKDIR
if (msh_exec_script(cmd, length) == 0)
{
@@ -371,7 +371,7 @@ int msh_exec(char *cmd, rt_size_t length)
return 0;
}
#endif /* RT_USING_LWP */
-#endif /* RT_USING_DFS */
+#endif /* RT_USING_POSIX */
/* truncate the cmd at the first space. */
{
@@ -400,7 +400,7 @@ static int str_common(const char *str1, const char *str2)
return (str - str1);
}
-#ifdef RT_USING_DFS
+#ifdef RT_USING_POSIX
void msh_auto_complete_path(char *path)
{
DIR *dir = RT_NULL;
@@ -521,7 +521,7 @@ void msh_auto_complete_path(char *path)
closedir(dir);
rt_free(full_path);
}
-#endif /* RT_USING_DFS */
+#endif /* RT_USING_POSIX */
void msh_auto_complete(char *prefix)
{
@@ -538,7 +538,7 @@ void msh_auto_complete(char *prefix)
return;
}
-#ifdef RT_USING_DFS
+#ifdef RT_USING_POSIX
/* check whether a spare in the command */
{
char *ptr;
diff --git a/components/finsh/msh_file.c b/components/finsh/msh_file.c
index 8f067efd98..4e9ed53b31 100644
--- a/components/finsh/msh_file.c
+++ b/components/finsh/msh_file.c
@@ -11,7 +11,7 @@
#include <rtthread.h>
-#if defined(RT_USING_FINSH) && defined(RT_USING_DFS)
+#if defined(RT_USING_FINSH) && defined(RT_USING_POSIX)
#include <finsh.h>
#include "msh.h"
@@ -702,5 +702,5 @@ static int cmd_tail(int argc, char **argv)
}
MSH_CMD_EXPORT_ALIAS(cmd_tail, tail, print the last N - lines data of the given file);
-#endif /* defined(RT_USING_FINSH) && defined(RT_USING_DFS) */
+#endif /* defined(RT_USING_FINSH) && defined(RT_USING_POSIX) */
diff --git a/components/finsh/shell.c b/components/finsh/shell.c
index 20f1bdef0f..292ea588cf 100644
--- a/components/finsh/shell.c
+++ b/components/finsh/shell.c
@@ -27,9 +27,9 @@
#include "shell.h"
#include "msh.h"
-#if defined(RT_USING_DFS)
- #include <dfs_posix.h>
-#endif /* RT_USING_DFS */
+#ifdef RT_USING_POSIX
+#include <dfs_posix.h>
+#endif /* RT_USING_POSIX */
/* finsh thread */
#ifndef RT_USING_HEAP
@@ -104,7 +104,7 @@ const char *finsh_get_prompt(void)
}
strcpy(finsh_prompt, _MSH_PROMPT);
-#if defined(RT_USING_DFS) && defined(DFS_USING_WORKDIR)
+#if defined(RT_USING_POSIX) && defined(DFS_USING_WORKDIR)
/* get current working directory */
getcwd(&finsh_prompt[rt_strlen(finsh_prompt)], RT_CONSOLEBUF_SIZE - rt_strlen(finsh_prompt));
#endif
@@ -145,7 +145,7 @@ void finsh_set_prompt_mode(rt_uint32_t prompt_mode)
int finsh_getchar(void)
{
#ifdef RT_USING_DEVICE
-#ifdef RT_USING_POSIX
+#ifdef RT_USING_LIBC
return getchar();
#else
char ch = 0;
@@ -163,14 +163,14 @@ int finsh_getchar(void)
rt_sem_take(&shell->rx_sem, RT_WAITING_FOREVER);
return ch;
-#endif /* RT_USING_POSIX */
+#endif /* RT_USING_LIBC */
#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_LIBC) && defined(RT_USING_DEVICE)
static rt_err_t finsh_rx_ind(rt_device_t dev, rt_size_t size)
{
RT_ASSERT(shell != RT_NULL);
@@ -436,7 +436,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_LIBC) && defined(RT_USING_DEVICE)
/* set console device as shell device */
if (shell->device == RT_NULL)
{
diff --git a/components/finsh/shell.h b/components/finsh/shell.h
index 985d3b3fbd..598596ce00 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_LIBC) && defined(RT_USING_DEVICE)
rt_device_t device;
#endif
diff --git a/components/libc/Kconfig b/components/libc/Kconfig
index b9600ef389..812b1ce48c 100644
--- a/components/libc/Kconfig
+++ b/components/libc/Kconfig
@@ -2,6 +2,8 @@ menu "POSIX layer and C standard library"
config RT_USING_LIBC
bool "Enable libc APIs from toolchain"
+ select RT_USING_DFS
+ select RT_USING_POSIX
default y
config RT_USING_PTHREADS
@@ -14,9 +16,9 @@ if RT_USING_PTHREADS
default 8
endif
-if RT_USING_LIBC && RT_USING_DFS
+if RT_USING_DFS
config RT_USING_POSIX
- bool "Enable POSIX layer for compatibility with UNIX APIs, poll/select etc"
+ bool "Enable POSIX layer, open/read/write/select etc"
select RT_USING_DFS_DEVFS
default y
@@ -49,9 +51,9 @@ if RT_USING_LIBC
default n
if RT_USING_MODULE
- config RT_USING_CUSTOM_DLMODULE
- bool "Enable load dynamic module by custom"
- default n
+ config RT_USING_CUSTOM_DLMODULE
+ bool "Enable load dynamic module by custom"
+ default n
endif
endif
diff --git a/components/libc/compilers/common/SConscript b/components/libc/compilers/common/SConscript
index fbdb2f11ec..b7a6626a36 100644
--- a/components/libc/compilers/common/SConscript
+++ b/components/libc/compilers/common/SConscript
@@ -6,18 +6,15 @@ src = []
cwd = GetCurrentDir()
group = []
CPPPATH = [cwd]
+CPPDEFINES = []
if GetDepend('RT_USING_LIBC'):
src += Glob('*.c')
- if GetDepend('RT_USING_POSIX') == False:
- SrcRemove(src, ['unistd.c', 'delay.c'])
elif GetDepend('RT_LIBC_USING_TIME'):
src += Glob('time.c')
if rtconfig.CROSS_TOOL == 'keil':
- CPPDEFINES = ['__CLK_TCK=RT_TICK_PER_SECOND']
-else:
- CPPDEFINES = []
+ CPPDEFINES += ['__CLK_TCK=RT_TICK_PER_SECOND']
group = DefineGroup('libc', src, depend = [], CPPPATH = CPPPATH, CPPDEFINES = CPPDEFINES)
diff --git a/components/libc/compilers/common/readme.md b/components/libc/compilers/common/readme.md
index 856ddeb045..82e23f8970 100644
--- a/components/libc/compilers/common/readme.md
+++ b/components/libc/compilers/common/readme.md
@@ -1,10 +1 @@
-## Attentions
-
-1. This folder is "common" for all toolchains.
-
-2. If you want to add new `.c` files, please do not forget to fix SConscript file too. eg:
-
-```python
-if GetDepend('RT_USING_POSIX') == False:
- SrcRemove(src, ['unistd.c'])
-``` \ No newline at end of file
+This folder is "common" for all toolchains. \ No newline at end of file
diff --git a/components/libc/compilers/common/unistd.c b/components/libc/compilers/common/unistd.c
deleted file mode 100644
index 9a457c4200..0000000000
--- a/components/libc/compilers/common/unistd.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Copyright (c) 2006-2021, RT-Thread Development Team
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Change Logs:
- * Date Author Notes
- * 2020-09-01 Meco Man first Version
- * 2021-02-12 Meco Man move all functions located in <pthread_sleep.c> to this file
- */
-
-#include <unistd.h>
-#include <rtthread.h>
-#include <rthw.h>
-
-#ifdef RT_USING_POSIX_TERMIOS
-#include "termios.h"
-int isatty(int fd)
-{
- struct termios ts;
- return(tcgetattr(fd, &ts) != -1); /*true if no error (is a tty)*/
-}
-#else
-int isatty(int fd)
-{
- if (fd >=0 && fd < 3)
- {
- return 1;
- }
- else
- {
- return 0;
- }
-}
-#endif
-RTM_EXPORT(isatty);
-
-char *ttyname(int fd)
-{
- return "/dev/tty"; /* TODO: need to add more specific */
-}
-RTM_EXPORT(ttyname);
-
-unsigned int sleep(unsigned int seconds)
-{
- if (rt_thread_self() != RT_NULL)
- {
- rt_thread_delay(seconds * RT_TICK_PER_SECOND);
- }
- else /* scheduler has not run yet */
- {
- while(seconds > 0)
- {
- rt_hw_us_delay(1000000u);
- seconds --;
- }
- }
-
- return 0;
-}
-RTM_EXPORT(sleep);
-
-int usleep(useconds_t usec)
-{
- if (rt_thread_self() != RT_NULL)
- {
- rt_thread_mdelay(usec / 1000u);
- }
- else /* scheduler has not run yet */
- {
- rt_hw_us_delay(usec / 1000u);
- }
- rt_hw_us_delay(usec % 1000u);
-
- return 0;
-}
-RTM_EXPORT(usleep);
-
-pid_t gettid(void)
-{
- /*TODO*/
- return 0;
-}
-
-pid_t getpid(void)
-{
- return gettid();
-}
-RTM_EXPORT(getpid);
-
-pid_t getppid(void)
-{
- return 0;
-}
-RTM_EXPORT(getppid);
-
-uid_t getuid(void)
-{
- return 0; /*ROOT*/
-}
-RTM_EXPORT(getuid);
-
-uid_t geteuid(void)
-{
- return 0; /*ROOT*/
-}
-RTM_EXPORT(geteuid);
-
-gid_t getgid(void)
-{
- return 0; /*ROOT*/
-}
-RTM_EXPORT(getgid);
-
-gid_t getegid(void)
-{
- return 0; /*ROOT*/
-}
-RTM_EXPORT(getegid);
diff --git a/components/libc/posix/aio/SConscript b/components/libc/posix/aio/SConscript
index f10462e9c4..445efaade5 100644
--- a/components/libc/posix/aio/SConscript
+++ b/components/libc/posix/aio/SConscript
@@ -3,9 +3,9 @@
from building import *
cwd = GetCurrentDir()
-src = Glob('*.c') + Glob('*.cpp')
+src = Glob('*.c')
CPPPATH = [cwd]
-group = DefineGroup('libc', src, depend = ['RT_USING_POSIX', 'RT_USING_POSIX_AIO'], CPPPATH = CPPPATH)
+group = DefineGroup('POSIX', src, depend = ['RT_USING_POSIX', 'RT_USING_POSIX_AIO'], CPPPATH = CPPPATH)
Return('group')
diff --git a/components/libc/posix/getline/SConscript b/components/libc/posix/getline/SConscript
index fa4c8618c1..bb18dc04c5 100644
--- a/components/libc/posix/getline/SConscript
+++ b/components/libc/posix/getline/SConscript
@@ -6,7 +6,7 @@ cwd = GetCurrentDir()
src = Glob('*.c') + Glob('*.cpp')
CPPPATH = [cwd]
-group = DefineGroup('libc', src,
+group = DefineGroup('POSIX', src,
depend = ['RT_USING_LIBC', 'RT_USING_POSIX','RT_USING_POSIX_GETLINE'],
CPPPATH = CPPPATH)
diff --git a/components/libc/posix/mmap/SConscript b/components/libc/posix/mmap/SConscript
index 1a36a15710..fd5b2b953e 100644
--- a/components/libc/posix/mmap/SConscript
+++ b/components/libc/posix/mmap/SConscript
@@ -6,7 +6,7 @@ cwd = GetCurrentDir()
src = Glob('*.c') + Glob('*.cpp')
CPPPATH = [cwd]
-group = DefineGroup('libc', src,
+group = DefineGroup('POSIX', src,
depend = ['RT_USING_DFS', 'RT_USING_POSIX_MMAP'],
CPPPATH = CPPPATH)
diff --git a/components/libc/posix/pthreads/SConscript b/components/libc/posix/pthreads/SConscript
index 767b406d4c..7cd78300b2 100644
--- a/components/libc/posix/pthreads/SConscript
+++ b/components/libc/posix/pthreads/SConscript
@@ -16,7 +16,7 @@ try:
except :
pass
-group = DefineGroup('libc', src,
+group = DefineGroup('POSIX', src,
depend = ['RT_USING_PTHREADS', 'RT_USING_LIBC'], CPPPATH = CPPPATH, CPPDEFINES = CPPDEFINES)
Return('group')
diff --git a/components/libc/posix/signal/SConscript b/components/libc/posix/signal/SConscript
index f07ff58f6e..07cd98cbe0 100644
--- a/components/libc/posix/signal/SConscript
+++ b/components/libc/posix/signal/SConscript
@@ -6,7 +6,7 @@ cwd = GetCurrentDir()
src = Glob('*.c') + Glob('*.cpp')
CPPPATH = [cwd]
-group = DefineGroup('libc', src,
+group = DefineGroup('POSIX', src,
depend = ['RT_USING_SIGNALS', 'RT_USING_PTHREADS', 'RT_USING_LIBC'],
CPPPATH = CPPPATH)
diff --git a/components/libc/posix/src/SConscript b/components/libc/posix/src/SConscript
new file mode 100644
index 0000000000..5640181ac5
--- /dev/null
+++ b/components/libc/posix/src/SConscript
@@ -0,0 +1,10 @@
+# RT-Thread building script for component
+
+from building import *
+
+cwd = GetCurrentDir()
+src = Glob('*.c')
+
+group = DefineGroup('POSIX', src, depend = ['RT_USING_POSIX'])
+
+Return('group')
diff --git a/components/libc/compilers/common/delay.c b/components/libc/posix/src/delay.c
index 4666258d3b..1638caafbf 100644
--- a/components/libc/compilers/common/delay.c
+++ b/components/libc/posix/src/delay.c
@@ -9,6 +9,15 @@
*/
#include <rtthread.h>
#include <rthw.h>
+#define DBG_TAG "POSIX.delay"
+#define DBG_LVL DBG_INFO
+#include <rtdbg.h>
+
+RT_WEAK void rt_hw_us_delay(rt_uint32_t us)
+{
+ (void) us;
+ LOG_W("Please consider implementing rt_hw_us_delay() in another file.");
+}
void msleep(unsigned int msecs)
{
diff --git a/components/dfs/src/dfs_poll.c b/components/libc/posix/src/poll.c
index 607b3487be..2109fb310b 100644
--- a/components/dfs/src/dfs_poll.c
+++ b/components/libc/posix/src/poll.c
@@ -9,14 +9,9 @@
* 2018-03-09 Bernard Add protection for pt->triggered.
*/
#include <stdint.h>
-
#include <rthw.h>
-#include <rtdevice.h>
#include <rtthread.h>
-
-#include <dfs.h>
#include <dfs_file.h>
-#include <dfs_posix.h>
#include <poll.h>
#ifdef RT_USING_POSIX
diff --git a/components/dfs/src/dfs_select.c b/components/libc/posix/src/select.c
index 795b816354..25cda0f0d1 100644
--- a/components/dfs/src/dfs_select.c
+++ b/components/libc/posix/src/select.c
@@ -7,10 +7,7 @@
* Date Author Notes
* 2016-12-28 Bernard first version
*/
-#include <dfs.h>
-#include <dfs_fs.h>
-#include <dfs_posix.h>
-
+#include <rtthread.h>
#include <poll.h>
#include <sys/select.h>
diff --git a/components/dfs/src/dfs_posix.c b/components/libc/posix/src/unistd.c
index acc05fcd53..ef2df2c2fe 100644
--- a/components/dfs/src/dfs_posix.c
+++ b/components/libc/posix/src/unistd.c
@@ -5,19 +5,15 @@
*
* Change Logs:
* Date Author Notes
- * 2009-05-27 Yi.qiu The first version
- * 2018-02-07 Bernard Change the 3rd parameter of open/fcntl/ioctl to '...'
+ * 2020-09-01 Meco Man first Version
+ * 2021-02-12 Meco Man move all functions located in <pthread_sleep.c> to this file
*/
-
-#include <dfs.h>
-#include <dfs_posix.h>
-#include "dfs_private.h"
-
-/**
- * @addtogroup FsPosixApi
- */
-
-/*@{*/
+#include <rtthread.h>
+#include <dfs_file.h>
+#include <dfs_private.h>
+#include <sys/errno.h>
+#include <unistd.h>
+#include <delay.h>
/**
* this function is a POSIX compliant version, which will open a file and
@@ -585,11 +581,6 @@ int mkdir(const char *path, mode_t mode)
}
RTM_EXPORT(mkdir);
-#ifdef RT_USING_FINSH
-#include <finsh.h>
-FINSH_FUNCTION_EXPORT(mkdir, create a directory);
-#endif
-
/**
* this function is a POSIX compliant version, which will remove a directory.
*
@@ -947,4 +938,107 @@ char *getcwd(char *buf, size_t size)
}
RTM_EXPORT(getcwd);
-/* @} */
+#ifdef RT_USING_POSIX_TERMIOS
+#include "termios.h"
+int isatty(int fd)
+{
+ struct termios ts;
+ return(tcgetattr(fd, &ts) != -1); /*true if no error (is a tty)*/
+}
+#else
+int isatty(int fd)
+{
+ if (fd >=0 && fd < 3)
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+#endif
+RTM_EXPORT(isatty);
+
+char *ttyname(int fd)
+{
+ return "/dev/tty"; /* TODO: need to add more specific */
+}
+RTM_EXPORT(ttyname);
+
+unsigned int sleep(unsigned int seconds)
+{
+ if (rt_thread_self() != RT_NULL)
+ {
+ ssleep(seconds);
+ }
+ else /* scheduler has not run yet */
+ {
+ while(seconds > 0)
+ {
+ udelay(1000000u);
+ seconds --;
+ }
+ }
+
+ return 0;
+}
+RTM_EXPORT(sleep);
+
+int usleep(useconds_t usec)
+{
+ if (rt_thread_self() != RT_NULL)
+ {
+ msleep(usec / 1000u);
+ }
+ else /* scheduler has not run yet */
+ {
+ udelay(usec / 1000u);
+ }
+ udelay(usec % 1000u);
+
+ return 0;
+}
+RTM_EXPORT(usleep);
+
+pid_t gettid(void)
+{
+ /*TODO*/
+ return 0;
+}
+
+pid_t getpid(void)
+{
+ return gettid();
+}
+RTM_EXPORT(getpid);
+
+pid_t getppid(void)
+{
+ return 0;
+}
+RTM_EXPORT(getppid);
+
+uid_t getuid(void)
+{
+ return 0; /*ROOT*/
+}
+RTM_EXPORT(getuid);
+
+uid_t geteuid(void)
+{
+ return 0; /*ROOT*/
+}
+RTM_EXPORT(geteuid);
+
+gid_t getgid(void)
+{
+ return 0; /*ROOT*/
+}
+RTM_EXPORT(getgid);
+
+gid_t getegid(void)
+{
+ return 0; /*ROOT*/
+}
+RTM_EXPORT(getegid);
diff --git a/components/libc/posix/termios/SConscript b/components/libc/posix/termios/SConscript
index 381eb5ad8b..bd9a528461 100644
--- a/components/libc/posix/termios/SConscript
+++ b/components/libc/posix/termios/SConscript
@@ -6,7 +6,7 @@ cwd = GetCurrentDir()
src = Glob('*.c') + Glob('*.cpp')
CPPPATH = [cwd]
-group = DefineGroup('libc', src,
+group = DefineGroup('POSIX', src,
depend = ['RT_USING_LIBC', 'RT_USING_POSIX', 'RT_USING_POSIX_TERMIOS'],
CPPPATH = CPPPATH)