[posix][dfs] move dfs_posix dfs_poll dfs_select.c to posix folder
This commit is contained in:
parent
bcdd4a6256
commit
f7548b934e
|
@ -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 */
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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'):
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 */
|
||||||
/* @} */
|
/* @} */
|
||||||
|
|
||||||
|
|
|
@ -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]
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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) */
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
||||||
|
|
|
@ -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'])
|
|
||||||
```
|
|
|
@ -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);
|
|
|
@ -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')
|
||||||
|
|
|
@ -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)
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
||||||
|
|
|
@ -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')
|
||||||
|
|
|
@ -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)
|
||||||
|
|
||||||
|
|
|
@ -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')
|
|
@ -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)
|
||||||
{
|
{
|
|
@ -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
|
|
@ -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>
|
||||||
|
|
|
@ -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);
|
|
@ -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)
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue