[posix][dfs] move dfs_posix dfs_poll dfs_select.c to posix folder

This commit is contained in:
Meco Man 2021-10-20 21:44:01 -04:00
parent bcdd4a6256
commit f7548b934e
28 changed files with 183 additions and 217 deletions

View File

@ -125,6 +125,7 @@
/* POSIX layer and C standard library */ /* POSIX layer and C standard library */
#define RT_USING_LIBC #define RT_USING_LIBC
#define RT_USING_POSIX
#define RT_LIBC_USING_TIME #define RT_LIBC_USING_TIME
#define RT_LIBC_DEFAULT_TIMEZONE 8 #define RT_LIBC_DEFAULT_TIMEZONE 8
/* end of POSIX layer and C standard library */ /* end of POSIX layer and C standard library */

View File

@ -119,7 +119,7 @@ void rtthread_startup(void)
#ifdef RT_USING_FINSH #ifdef RT_USING_FINSH
/* init finsh */ /* init finsh */
finsh_system_init(); finsh_system_init();
#ifdef RT_USING_DEVICE #if !defined(RT_USING_LIBC) && defined(RT_USING_DEVICE)
finsh_set_device("uart1"); finsh_set_device("uart1");
#endif #endif
#endif #endif

View File

@ -75,8 +75,10 @@
#define FINSH_USING_SYMTAB #define FINSH_USING_SYMTAB
#define FINSH_USING_DESCRIPTION #define FINSH_USING_DESCRIPTION
#define RT_USING_LIBC
#define RT_USING_DFS #define RT_USING_DFS
/* SECTION: DFS options */ #define RT_USING_POSIX
#define RT_USING_DFS_DEVFS
#define RT_USING_DFS_ELMFAT #define RT_USING_DFS_ELMFAT
#define RT_DFS_ELM_WORD_ACCESS #define RT_DFS_ELM_WORD_ACCESS
@ -144,6 +146,5 @@
/* the size of each pbuf in the pbuf pool. */ /* the size of each pbuf in the pbuf pool. */
#define RT_LWIP_PBUF_POOL_BUFSIZE 1500 #define RT_LWIP_PBUF_POOL_BUFSIZE 1500
#define RT_USING_LIBC
#define RT_USING_LWIP141 #define RT_USING_LWIP141
#endif #endif

View File

@ -5,14 +5,10 @@ src = Split('''
src/dfs.c src/dfs.c
src/dfs_file.c src/dfs_file.c
src/dfs_fs.c src/dfs_fs.c
src/dfs_posix.c
''') ''')
cwd = GetCurrentDir() cwd = GetCurrentDir()
CPPPATH = [cwd + "/include"] 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) group = DefineGroup('Filesystem', src, depend = ['RT_USING_DFS'], CPPPATH = CPPPATH)
if GetDepend('RT_USING_DFS'): if GetDepend('RT_USING_DFS'):

View File

@ -18,7 +18,7 @@
#include <lwp.h> #include <lwp.h>
#endif #endif
#if defined(RT_USING_DFS_DEVFS) && defined(RT_USING_POSIX) #ifdef RT_USING_LIBC
#include <libc.h> #include <libc.h>
#endif #endif
@ -216,7 +216,7 @@ struct dfs_fd *fd_get(int fd)
struct dfs_fd *d; struct dfs_fd *d;
struct dfs_fdtable *fdt; struct dfs_fdtable *fdt;
#if defined(RT_USING_DFS_DEVFS) && defined(RT_USING_POSIX) #ifdef RT_USING_LIBC
if ((0 <= fd) && (fd <= 2)) if ((0 <= fd) && (fd <= 2))
fd = libc_stdio_get_console(); fd = libc_stdio_get_console();
#endif #endif

View File

@ -621,6 +621,7 @@ void cat(const char *filename)
} }
FINSH_FUNCTION_EXPORT(cat, print file); FINSH_FUNCTION_EXPORT(cat, print file);
#ifdef RT_USING_POSIX
#define BUF_SZ 4096 #define BUF_SZ 4096
static void copyfile(const char *src, const char *dst) 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 */ /* skip the '/' then return */
return ++ptr; return ++ptr;
} }
void copy(const char *src, const char *dst) void copy(const char *src, const char *dst)
{ {
#define FLAG_SRC_TYPE 0x03 #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) FINSH_FUNCTION_EXPORT(copy, copy file or dir)
#endif /* RT_USING_POSIX */
#endif #endif /* RT_USING_FINSH */
/* @} */ /* @} */

View File

@ -9,7 +9,7 @@ msh.c
if GetDepend('MSH_USING_BUILT_IN_COMMANDS'): if GetDepend('MSH_USING_BUILT_IN_COMMANDS'):
src += ['cmd.c'] src += ['cmd.c']
if GetDepend('RT_USING_DFS'): if GetDepend('RT_USING_POSIX'):
src += ['msh_file.c'] src += ['msh_file.c']
CPPPATH = [cwd] CPPPATH = [cwd]

View File

@ -169,7 +169,7 @@ extern struct finsh_syscall *_syscall_table_begin, *_syscall_table_end;
struct finsh_syscall *finsh_syscall_lookup(const char *name); struct finsh_syscall *finsh_syscall_lookup(const char *name);
#ifdef RT_USING_DEVICE #ifdef RT_USING_DEVICE
void finsh_set_device(const char *device_name); void finsh_set_device(const char *device_name);
#endif #endif
#endif #endif

View File

@ -21,7 +21,7 @@
#include "msh.h" #include "msh.h"
#include "shell.h" #include "shell.h"
#ifdef RT_USING_DFS #ifdef RT_USING_POSIX
#include <dfs_posix.h> #include <dfs_posix.h>
#endif #endif
@ -186,7 +186,7 @@ static cmd_function_t msh_get_cmd(char *cmd, int size)
return cmd_func; 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. /* Return 0 on module executed. Other value indicate error.
*/ */
int msh_exec_module(const char *cmd_line, int size) 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); rt_free(pg_name);
return ret; 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) 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; 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) static int _msh_exec_lwp(char *cmd, rt_size_t length)
{ {
int argc; int argc;
@ -350,7 +350,7 @@ int msh_exec(char *cmd, rt_size_t length)
{ {
return cmd_ret; return cmd_ret;
} }
#ifdef RT_USING_DFS #ifdef RT_USING_POSIX
#ifdef DFS_USING_WORKDIR #ifdef DFS_USING_WORKDIR
if (msh_exec_script(cmd, length) == 0) if (msh_exec_script(cmd, length) == 0)
{ {
@ -371,7 +371,7 @@ int msh_exec(char *cmd, rt_size_t length)
return 0; return 0;
} }
#endif /* RT_USING_LWP */ #endif /* RT_USING_LWP */
#endif /* RT_USING_DFS */ #endif /* RT_USING_POSIX */
/* truncate the cmd at the first space. */ /* truncate the cmd at the first space. */
{ {
@ -400,7 +400,7 @@ static int str_common(const char *str1, const char *str2)
return (str - str1); return (str - str1);
} }
#ifdef RT_USING_DFS #ifdef RT_USING_POSIX
void msh_auto_complete_path(char *path) void msh_auto_complete_path(char *path)
{ {
DIR *dir = RT_NULL; DIR *dir = RT_NULL;
@ -521,7 +521,7 @@ void msh_auto_complete_path(char *path)
closedir(dir); closedir(dir);
rt_free(full_path); rt_free(full_path);
} }
#endif /* RT_USING_DFS */ #endif /* RT_USING_POSIX */
void msh_auto_complete(char *prefix) void msh_auto_complete(char *prefix)
{ {
@ -538,7 +538,7 @@ void msh_auto_complete(char *prefix)
return; return;
} }
#ifdef RT_USING_DFS #ifdef RT_USING_POSIX
/* check whether a spare in the command */ /* check whether a spare in the command */
{ {
char *ptr; char *ptr;

View File

@ -11,7 +11,7 @@
#include <rtthread.h> #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 <finsh.h>
#include "msh.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); 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) */

View File

@ -27,9 +27,9 @@
#include "shell.h" #include "shell.h"
#include "msh.h" #include "msh.h"
#if defined(RT_USING_DFS) #ifdef RT_USING_POSIX
#include <dfs_posix.h> #include <dfs_posix.h>
#endif /* RT_USING_DFS */ #endif /* RT_USING_POSIX */
/* finsh thread */ /* finsh thread */
#ifndef RT_USING_HEAP #ifndef RT_USING_HEAP
@ -104,7 +104,7 @@ const char *finsh_get_prompt(void)
} }
strcpy(finsh_prompt, _MSH_PROMPT); 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 */ /* get current working directory */
getcwd(&finsh_prompt[rt_strlen(finsh_prompt)], RT_CONSOLEBUF_SIZE - rt_strlen(finsh_prompt)); getcwd(&finsh_prompt[rt_strlen(finsh_prompt)], RT_CONSOLEBUF_SIZE - rt_strlen(finsh_prompt));
#endif #endif
@ -145,7 +145,7 @@ void finsh_set_prompt_mode(rt_uint32_t prompt_mode)
int finsh_getchar(void) int finsh_getchar(void)
{ {
#ifdef RT_USING_DEVICE #ifdef RT_USING_DEVICE
#ifdef RT_USING_POSIX #ifdef RT_USING_LIBC
return getchar(); return getchar();
#else #else
char ch = 0; char ch = 0;
@ -163,14 +163,14 @@ int finsh_getchar(void)
rt_sem_take(&shell->rx_sem, RT_WAITING_FOREVER); rt_sem_take(&shell->rx_sem, RT_WAITING_FOREVER);
return ch; return ch;
#endif /* RT_USING_POSIX */ #endif /* RT_USING_LIBC */
#else #else
extern char rt_hw_console_getchar(void); extern char rt_hw_console_getchar(void);
return rt_hw_console_getchar(); return rt_hw_console_getchar();
#endif /* RT_USING_DEVICE */ #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) static rt_err_t finsh_rx_ind(rt_device_t dev, rt_size_t size)
{ {
RT_ASSERT(shell != RT_NULL); RT_ASSERT(shell != RT_NULL);
@ -436,7 +436,7 @@ void finsh_thread_entry(void *parameter)
shell->echo_mode = 0; shell->echo_mode = 0;
#endif #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 */ /* set console device as shell device */
if (shell->device == RT_NULL) if (shell->device == RT_NULL)
{ {

View File

@ -78,7 +78,7 @@ struct finsh_shell
rt_uint16_t line_position; rt_uint16_t line_position;
rt_uint16_t line_curpos; 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; rt_device_t device;
#endif #endif

View File

@ -2,6 +2,8 @@ menu "POSIX layer and C standard library"
config RT_USING_LIBC config RT_USING_LIBC
bool "Enable libc APIs from toolchain" bool "Enable libc APIs from toolchain"
select RT_USING_DFS
select RT_USING_POSIX
default y default y
config RT_USING_PTHREADS config RT_USING_PTHREADS
@ -14,9 +16,9 @@ if RT_USING_PTHREADS
default 8 default 8
endif endif
if RT_USING_LIBC && RT_USING_DFS if RT_USING_DFS
config RT_USING_POSIX 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 select RT_USING_DFS_DEVFS
default y default y
@ -49,9 +51,9 @@ if RT_USING_LIBC
default n default n
if RT_USING_MODULE if RT_USING_MODULE
config RT_USING_CUSTOM_DLMODULE config RT_USING_CUSTOM_DLMODULE
bool "Enable load dynamic module by custom" bool "Enable load dynamic module by custom"
default n default n
endif endif
endif endif

View File

@ -6,18 +6,15 @@ src = []
cwd = GetCurrentDir() cwd = GetCurrentDir()
group = [] group = []
CPPPATH = [cwd] CPPPATH = [cwd]
CPPDEFINES = []
if GetDepend('RT_USING_LIBC'): if GetDepend('RT_USING_LIBC'):
src += Glob('*.c') src += Glob('*.c')
if GetDepend('RT_USING_POSIX') == False:
SrcRemove(src, ['unistd.c', 'delay.c'])
elif GetDepend('RT_LIBC_USING_TIME'): elif GetDepend('RT_LIBC_USING_TIME'):
src += ['time.c'] src += ['time.c']
if rtconfig.CROSS_TOOL == 'keil': if rtconfig.CROSS_TOOL == 'keil':
CPPDEFINES = ['__CLK_TCK=RT_TICK_PER_SECOND'] CPPDEFINES += ['__CLK_TCK=RT_TICK_PER_SECOND']
else:
CPPDEFINES = []
group = DefineGroup('libc', src, depend = [], CPPPATH = CPPPATH, CPPDEFINES = CPPDEFINES) group = DefineGroup('libc', src, depend = [], CPPPATH = CPPPATH, CPPDEFINES = CPPDEFINES)

View File

@ -1,10 +1 @@
## Attentions This folder is "common" for all toolchains.
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'])
```

View File

@ -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);

View File

@ -3,9 +3,9 @@
from building import * from building import *
cwd = GetCurrentDir() cwd = GetCurrentDir()
src = Glob('*.c') + Glob('*.cpp') src = Glob('*.c')
CPPPATH = [cwd] 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') Return('group')

View File

@ -6,7 +6,7 @@ cwd = GetCurrentDir()
src = Glob('*.c') + Glob('*.cpp') src = Glob('*.c') + Glob('*.cpp')
CPPPATH = [cwd] CPPPATH = [cwd]
group = DefineGroup('libc', src, group = DefineGroup('POSIX', src,
depend = ['RT_USING_LIBC', 'RT_USING_POSIX','RT_USING_POSIX_GETLINE'], depend = ['RT_USING_LIBC', 'RT_USING_POSIX','RT_USING_POSIX_GETLINE'],
CPPPATH = CPPPATH) CPPPATH = CPPPATH)

View File

@ -6,7 +6,7 @@ cwd = GetCurrentDir()
src = Glob('*.c') + Glob('*.cpp') src = Glob('*.c') + Glob('*.cpp')
CPPPATH = [cwd] CPPPATH = [cwd]
group = DefineGroup('libc', src, group = DefineGroup('POSIX', src,
depend = ['RT_USING_DFS', 'RT_USING_POSIX_MMAP'], depend = ['RT_USING_DFS', 'RT_USING_POSIX_MMAP'],
CPPPATH = CPPPATH) CPPPATH = CPPPATH)

View File

@ -16,7 +16,7 @@ try:
except : except :
pass pass
group = DefineGroup('libc', src, group = DefineGroup('POSIX', src,
depend = ['RT_USING_PTHREADS', 'RT_USING_LIBC'], CPPPATH = CPPPATH, CPPDEFINES = CPPDEFINES) depend = ['RT_USING_PTHREADS', 'RT_USING_LIBC'], CPPPATH = CPPPATH, CPPDEFINES = CPPDEFINES)
Return('group') Return('group')

View File

@ -6,7 +6,7 @@ cwd = GetCurrentDir()
src = Glob('*.c') + Glob('*.cpp') src = Glob('*.c') + Glob('*.cpp')
CPPPATH = [cwd] CPPPATH = [cwd]
group = DefineGroup('libc', src, group = DefineGroup('POSIX', src,
depend = ['RT_USING_SIGNALS', 'RT_USING_PTHREADS', 'RT_USING_LIBC'], depend = ['RT_USING_SIGNALS', 'RT_USING_PTHREADS', 'RT_USING_LIBC'],
CPPPATH = CPPPATH) CPPPATH = CPPPATH)

View File

@ -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')

View File

@ -9,6 +9,15 @@
*/ */
#include <rtthread.h> #include <rtthread.h>
#include <rthw.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) void msleep(unsigned int msecs)
{ {

View File

@ -9,14 +9,9 @@
* 2018-03-09 Bernard Add protection for pt->triggered. * 2018-03-09 Bernard Add protection for pt->triggered.
*/ */
#include <stdint.h> #include <stdint.h>
#include <rthw.h> #include <rthw.h>
#include <rtdevice.h>
#include <rtthread.h> #include <rtthread.h>
#include <dfs.h>
#include <dfs_file.h> #include <dfs_file.h>
#include <dfs_posix.h>
#include <poll.h> #include <poll.h>
#ifdef RT_USING_POSIX #ifdef RT_USING_POSIX

View File

@ -7,10 +7,7 @@
* Date Author Notes * Date Author Notes
* 2016-12-28 Bernard first version * 2016-12-28 Bernard first version
*/ */
#include <dfs.h> #include <rtthread.h>
#include <dfs_fs.h>
#include <dfs_posix.h>
#include <poll.h> #include <poll.h>
#include <sys/select.h> #include <sys/select.h>

View File

@ -5,19 +5,15 @@
* *
* Change Logs: * Change Logs:
* Date Author Notes * Date Author Notes
* 2009-05-27 Yi.qiu The first version * 2020-09-01 Meco Man first Version
* 2018-02-07 Bernard Change the 3rd parameter of open/fcntl/ioctl to '...' * 2021-02-12 Meco Man move all functions located in <pthread_sleep.c> to this file
*/ */
#include <rtthread.h>
#include <dfs.h> #include <dfs_file.h>
#include <dfs_posix.h> #include <dfs_private.h>
#include "dfs_private.h" #include <sys/errno.h>
#include <unistd.h>
/** #include <delay.h>
* @addtogroup FsPosixApi
*/
/*@{*/
/** /**
* this function is a POSIX compliant version, which will open a file and * 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); 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. * 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); 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);

View File

@ -6,7 +6,7 @@ cwd = GetCurrentDir()
src = Glob('*.c') + Glob('*.cpp') src = Glob('*.c') + Glob('*.cpp')
CPPPATH = [cwd] CPPPATH = [cwd]
group = DefineGroup('libc', src, group = DefineGroup('POSIX', src,
depend = ['RT_USING_LIBC', 'RT_USING_POSIX', 'RT_USING_POSIX_TERMIOS'], depend = ['RT_USING_LIBC', 'RT_USING_POSIX', 'RT_USING_POSIX_TERMIOS'],
CPPPATH = CPPPATH) CPPPATH = CPPPATH)

View File

@ -17,18 +17,7 @@
#if !defined(RT_USING_DFS) || !defined(RT_USING_DFS_DEVFS) #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)" #error "POSIX poll/select, stdin need file system(RT_USING_DFS) and device file system(RT_USING_DFS_DEVFS)"
#endif #endif
#endif /* RT_USING_POSIX */
#if !defined(RT_USING_LIBC)
#error "POSIX layer need standard C library(RT_USING_LIBC)"
#endif
#endif
#ifdef RT_USING_POSIX_TERMIOS
#if !defined(RT_USING_POSIX)
#error "termios need POSIX layer(RT_USING_POSIX)"
#endif
#endif
/* Using this macro to control all kernel debug features. */ /* Using this macro to control all kernel debug features. */
#ifdef RT_DEBUG #ifdef RT_DEBUG