From 664a1d6a756ec569221f20cb016110755715842c Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Sun, 7 Nov 2021 20:47:36 -0500 Subject: 增加 RT_USING_POSIX_SELECT RT_USING_POSIX_POLL MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/libc/posix/src/SConscript | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'components/libc/posix/src/SConscript') diff --git a/components/libc/posix/src/SConscript b/components/libc/posix/src/SConscript index 8712d671c0..384e71261a 100644 --- a/components/libc/posix/src/SConscript +++ b/components/libc/posix/src/SConscript @@ -2,10 +2,16 @@ from building import * -src = Glob('*.c') +src = ['libc.c','delay.c','unistd.c'] cwd = GetCurrentDir() CPPPATH = [cwd] +if GetDepend('RT_USING_POSIX_POLL'): + src += ['poll.c'] + +if GetDepend('RT_USING_POSIX_SELECT'): + src += ['select.c'] + group = DefineGroup('POSIX', src, depend = ['RT_USING_POSIX'], CPPPATH = CPPPATH) Return('group') -- cgit v1.3.1 From 2639171885a86a5b169a63a95cd2fb2776b97641 Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Sun, 7 Nov 2021 21:03:16 -0500 Subject: add RT_USING_POSIX_DELAY --- components/libc/Kconfig | 4 ++++ components/libc/posix/src/SConscript | 8 ++++++-- components/libc/posix/src/delay.c | 35 +++++++++++++++++++++++++++++++++++ components/libc/posix/src/unistd.c | 35 ----------------------------------- 4 files changed, 45 insertions(+), 37 deletions(-) (limited to 'components/libc/posix/src/SConscript') diff --git a/components/libc/Kconfig b/components/libc/Kconfig index 04d59051b8..d10c0afd6a 100644 --- a/components/libc/Kconfig +++ b/components/libc/Kconfig @@ -53,6 +53,10 @@ if RT_USING_POSIX select RT_USING_POSIX_POLL default n + config RT_USING_POSIX_DELAY + bool "Enable delay functions" + default n + config RT_USING_POSIX_GETLINE bool "Enable getline()/getdelim() APIs" default n diff --git a/components/libc/posix/src/SConscript b/components/libc/posix/src/SConscript index ab649ec6bc..4c6d3e3b7b 100644 --- a/components/libc/posix/src/SConscript +++ b/components/libc/posix/src/SConscript @@ -1,7 +1,8 @@ +# RT-Thread building script for component + from building import * -Import('rtconfig') -src = ['libc.c','delay.c','unistd.c'] +src = ['libc.c', 'unistd.c'] cwd = GetCurrentDir() CPPPATH = [cwd] @@ -11,6 +12,9 @@ if GetDepend('RT_USING_POSIX_POLL'): if GetDepend('RT_USING_POSIX_SELECT'): src += ['select.c'] +if GetDepend('RT_USING_POSIX_DELAY'): + src += ['delay.c'] + group = DefineGroup('POSIX', src, depend = ['RT_USING_POSIX'], CPPPATH = CPPPATH) Return('group') diff --git a/components/libc/posix/src/delay.c b/components/libc/posix/src/delay.c index 1638caafbf..3842eb0aa8 100644 --- a/components/libc/posix/src/delay.c +++ b/components/libc/posix/src/delay.c @@ -48,3 +48,38 @@ void ndelay(unsigned long nsecs) rt_hw_us_delay(1); } RTM_EXPORT(ndelay); + +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); diff --git a/components/libc/posix/src/unistd.c b/components/libc/posix/src/unistd.c index 99ff768738..6527994c93 100644 --- a/components/libc/posix/src/unistd.c +++ b/components/libc/posix/src/unistd.c @@ -965,38 +965,3 @@ 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); -- cgit v1.3.1 From f8388c572ef9969105b895cba3c55ba8d24efeda Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Sun, 7 Nov 2021 21:40:19 -0500 Subject: add RT_USING_POSIX_STDIO --- components/dfs/Kconfig | 2 +- components/dfs/src/dfs.c | 8 ++++---- components/finsh/shell.c | 12 ++++++------ components/finsh/shell.h | 2 +- components/libc/Kconfig | 5 ++++- components/libc/compilers/armlibc/syscalls.c | 14 +++++++------- components/libc/compilers/dlib/syscall_read.c | 4 ++-- components/libc/compilers/dlib/syscall_write.c | 4 ++-- components/libc/compilers/gcc/newlib/syscalls.c | 6 ++++-- components/libc/posix/src/SConscript | 5 ++++- include/rtdebug.h | 7 ------- 11 files changed, 35 insertions(+), 34 deletions(-) (limited to 'components/libc/posix/src/SConscript') diff --git a/components/dfs/Kconfig b/components/dfs/Kconfig index 7a4fbb655d..1ec36784d7 100644 --- a/components/dfs/Kconfig +++ b/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" diff --git a/components/dfs/src/dfs.c b/components/dfs/src/dfs.c index ed8d8094aa..29b2068a6c 100644 --- a/components/dfs/src/dfs.c +++ b/components/dfs/src/dfs.c @@ -18,9 +18,9 @@ #include #endif -#ifdef RT_USING_POSIX +#ifdef RT_USING_POSIX_STDIO #include -#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; diff --git a/components/finsh/shell.c b/components/finsh/shell.c index 6938ed1f24..c2f6e2a550 100644 --- a/components/finsh/shell.c +++ b/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 */ diff --git a/components/finsh/shell.h b/components/finsh/shell.h index 985d3b3fbd..d421f60374 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_POSIX_STDIO) && defined(RT_USING_DEVICE) rt_device_t device; #endif 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 #include #include -#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 #include #include -#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 #include #include -#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 #include #include -#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'] diff --git a/include/rtdebug.h b/include/rtdebug.h index c170d148c1..0858a5bbf1 100644 --- a/include/rtdebug.h +++ b/include/rtdebug.h @@ -12,13 +12,6 @@ #include -/* 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 -- cgit v1.3.1 From 1adcc181aa1e07925249562bc25372ede018ce54 Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Mon, 8 Nov 2021 02:07:07 -0500 Subject: add delay.c as default --- components/libc/posix/src/SConscript | 5 +---- components/libc/posix/src/delay.c | 1 + components/libc/posix/src/unistd.c | 1 - components/net/Kconfig | 1 - 4 files changed, 2 insertions(+), 6 deletions(-) (limited to 'components/libc/posix/src/SConscript') diff --git a/components/libc/posix/src/SConscript b/components/libc/posix/src/SConscript index 24c4ede4e1..b4454f6a52 100644 --- a/components/libc/posix/src/SConscript +++ b/components/libc/posix/src/SConscript @@ -2,7 +2,7 @@ from building import * -src = ['unistd.c'] +src = ['unistd.c', 'delay.c'] cwd = GetCurrentDir() CPPPATH = [cwd] @@ -15,9 +15,6 @@ if GetDepend('RT_USING_POSIX_POLL'): if GetDepend('RT_USING_POSIX_SELECT'): src += ['select.c'] -if GetDepend('RT_USING_POSIX_DELAY'): - src += ['delay.c'] - group = DefineGroup('POSIX', src, depend = ['RT_USING_POSIX'], CPPPATH = CPPPATH) Return('group') diff --git a/components/libc/posix/src/delay.c b/components/libc/posix/src/delay.c index 3842eb0aa8..c8564dc54e 100644 --- a/components/libc/posix/src/delay.c +++ b/components/libc/posix/src/delay.c @@ -7,6 +7,7 @@ * Date Author Notes * 2021-05-07 Meco Man first Version */ +#include #include #include #define DBG_TAG "POSIX.delay" diff --git a/components/libc/posix/src/unistd.c b/components/libc/posix/src/unistd.c index 6527994c93..85235965ea 100644 --- a/components/libc/posix/src/unistd.c +++ b/components/libc/posix/src/unistd.c @@ -13,7 +13,6 @@ #include #include #include -#include /** * this function is a POSIX compliant version, which will open a file and diff --git a/components/net/Kconfig b/components/net/Kconfig index 18a5e44db5..4d6317bac6 100644 --- a/components/net/Kconfig +++ b/components/net/Kconfig @@ -41,7 +41,6 @@ config RT_USING_SAL config SAL_USING_POSIX bool "Enable BSD socket operated by file system API" default n - select RT_USING_LIBC select RT_USING_POSIX select RT_USING_POSIX_SELECT help -- cgit v1.3.1 From 219d1e20f579cda0aac62d90bf926e8a0a9dd688 Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Tue, 9 Nov 2021 22:59:31 -0500 Subject: move mmap to src folder --- components/libc/Kconfig | 6 ++- components/libc/posix/mmap/SConscript | 13 ------- components/libc/posix/mmap/posix_mmap.c | 67 --------------------------------- components/libc/posix/src/SConscript | 3 ++ components/libc/posix/src/mmap.c | 67 +++++++++++++++++++++++++++++++++ components/libc/posix/src/poll.c | 4 -- components/libc/posix/src/select.c | 4 -- 7 files changed, 75 insertions(+), 89 deletions(-) delete mode 100644 components/libc/posix/mmap/SConscript delete mode 100644 components/libc/posix/mmap/posix_mmap.c create mode 100644 components/libc/posix/src/mmap.c (limited to 'components/libc/posix/src/SConscript') diff --git a/components/libc/Kconfig b/components/libc/Kconfig index 7106738b8e..4506001d42 100644 --- a/components/libc/Kconfig +++ b/components/libc/Kconfig @@ -44,16 +44,19 @@ config RT_USING_POSIX if RT_USING_POSIX config RT_USING_POSIX_STDIO - bool "Enable standard IO" + bool "Enable standard I/O" + select RT_USING_DFS select RT_USING_DFS_DEVFS default n config RT_USING_POSIX_POLL bool "Enable poll()" + select RT_USING_DFS default n config RT_USING_POSIX_SELECT bool "Enable select()" + select RT_USING_DFS select RT_USING_POSIX_POLL default n @@ -67,6 +70,7 @@ if RT_USING_POSIX config RT_USING_POSIX_MMAP bool "Enable mmap() API" + select RT_USING_DFS default n config RT_USING_POSIX_TERMIOS diff --git a/components/libc/posix/mmap/SConscript b/components/libc/posix/mmap/SConscript deleted file mode 100644 index fd5b2b953e..0000000000 --- a/components/libc/posix/mmap/SConscript +++ /dev/null @@ -1,13 +0,0 @@ -# RT-Thread building script for component - -from building import * - -cwd = GetCurrentDir() -src = Glob('*.c') + Glob('*.cpp') -CPPPATH = [cwd] - -group = DefineGroup('POSIX', src, - depend = ['RT_USING_DFS', 'RT_USING_POSIX_MMAP'], - CPPPATH = CPPPATH) - -Return('group') diff --git a/components/libc/posix/mmap/posix_mmap.c b/components/libc/posix/mmap/posix_mmap.c deleted file mode 100644 index e68b82e640..0000000000 --- a/components/libc/posix/mmap/posix_mmap.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (c) 2006-2021, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2017/11/30 Bernard The first version. - */ - -#include -#include - -#include -#include - -#include - -void *mmap(void *addr, size_t length, int prot, int flags, - int fd, off_t offset) -{ - uint8_t *mem; - - if (addr) - { - mem = addr; - } - else mem = (uint8_t *)malloc(length); - - if (mem) - { - off_t cur; - size_t read_bytes; - - cur = lseek(fd, 0, SEEK_SET); - - lseek(fd, offset, SEEK_SET); - read_bytes = read(fd, mem, length); - if (read_bytes != length) - { - if (addr == RT_NULL) - { - /* read failed */ - free(mem); - mem = RT_NULL; - } - } - lseek(fd, cur, SEEK_SET); - - return mem; - } - - errno = ENOMEM; - - return MAP_FAILED; -} - -int munmap(void *addr, size_t length) -{ - if (addr) - { - free(addr); - return 0; - } - - return -1; -} diff --git a/components/libc/posix/src/SConscript b/components/libc/posix/src/SConscript index b4454f6a52..0f5d0e9911 100644 --- a/components/libc/posix/src/SConscript +++ b/components/libc/posix/src/SConscript @@ -15,6 +15,9 @@ if GetDepend('RT_USING_POSIX_POLL'): if GetDepend('RT_USING_POSIX_SELECT'): src += ['select.c'] +if GetDepend('RT_USING_POSIX_MMAP'): + src += ['mmap.c'] + group = DefineGroup('POSIX', src, depend = ['RT_USING_POSIX'], CPPPATH = CPPPATH) Return('group') diff --git a/components/libc/posix/src/mmap.c b/components/libc/posix/src/mmap.c new file mode 100644 index 0000000000..e68b82e640 --- /dev/null +++ b/components/libc/posix/src/mmap.c @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2017/11/30 Bernard The first version. + */ + +#include +#include + +#include +#include + +#include + +void *mmap(void *addr, size_t length, int prot, int flags, + int fd, off_t offset) +{ + uint8_t *mem; + + if (addr) + { + mem = addr; + } + else mem = (uint8_t *)malloc(length); + + if (mem) + { + off_t cur; + size_t read_bytes; + + cur = lseek(fd, 0, SEEK_SET); + + lseek(fd, offset, SEEK_SET); + read_bytes = read(fd, mem, length); + if (read_bytes != length) + { + if (addr == RT_NULL) + { + /* read failed */ + free(mem); + mem = RT_NULL; + } + } + lseek(fd, cur, SEEK_SET); + + return mem; + } + + errno = ENOMEM; + + return MAP_FAILED; +} + +int munmap(void *addr, size_t length) +{ + if (addr) + { + free(addr); + return 0; + } + + return -1; +} diff --git a/components/libc/posix/src/poll.c b/components/libc/posix/src/poll.c index 2109fb310b..0c773b306c 100644 --- a/components/libc/posix/src/poll.c +++ b/components/libc/posix/src/poll.c @@ -14,8 +14,6 @@ #include #include -#ifdef RT_USING_POSIX - struct rt_poll_node; struct rt_poll_table @@ -226,5 +224,3 @@ int poll(struct pollfd *fds, nfds_t nfds, int timeout) return num; } - -#endif diff --git a/components/libc/posix/src/select.c b/components/libc/posix/src/select.c index 25cda0f0d1..55d320e921 100644 --- a/components/libc/posix/src/select.c +++ b/components/libc/posix/src/select.c @@ -11,8 +11,6 @@ #include #include -#ifdef RT_USING_POSIX - static void fdszero(fd_set *set, int nfds) { fd_mask *m; @@ -176,5 +174,3 @@ int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struc return ret; } - -#endif -- cgit v1.3.1 From 52bbd9d715ba889fb3e95b7a048f1a0f3e8d5e59 Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Wed, 10 Nov 2021 13:44:35 -0500 Subject: [posix] implement delay functions as RT_USING_POSIX_DELAY --- bsp/k210/.config | 40 +++++++++++++++++++++++++++--------- bsp/k210/rtconfig.h | 12 ++++++++--- components/libc/Kconfig | 12 +++++------ components/libc/posix/src/SConscript | 5 ++++- 4 files changed, 49 insertions(+), 20 deletions(-) (limited to 'components/libc/posix/src/SConscript') diff --git a/bsp/k210/.config b/bsp/k210/.config index 6ab28232cc..3e1fe4aa4b 100644 --- a/bsp/k210/.config +++ b/bsp/k210/.config @@ -7,6 +7,7 @@ # RT-Thread Kernel # CONFIG_RT_NAME_MAX=8 +# CONFIG_RT_USING_BIG_ENDIAN is not set # CONFIG_RT_USING_ARCH_DATA_TYPE is not set CONFIG_RT_USING_SMP=y CONFIG_RT_CPUS_NR=2 @@ -203,6 +204,7 @@ CONFIG_RT_DEBUG_SFUD=y # # Using USB # +# CONFIG_RT_USING_USB is not set # CONFIG_RT_USING_USB_HOST is not set # CONFIG_RT_USING_USB_DEVICE is not set @@ -210,15 +212,20 @@ CONFIG_RT_DEBUG_SFUD=y # POSIX layer and C standard library # CONFIG_RT_USING_LIBC=y -# CONFIG_RT_USING_PTHREADS is not set +CONFIG_RT_LIBC_USING_TIME=y +# CONFIG_RT_LIBC_USING_FILEIO is not set +# CONFIG_RT_USING_MODULE is not set +CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 CONFIG_RT_USING_POSIX=y +# CONFIG_RT_USING_POSIX_STDIO is not set +# CONFIG_RT_USING_POSIX_POLL is not set +# CONFIG_RT_USING_POSIX_SELECT is not set +CONFIG_RT_USING_POSIX_DELAY=y +# CONFIG_RT_USING_POSIX_GETLINE is not set # CONFIG_RT_USING_POSIX_MMAP is not set # CONFIG_RT_USING_POSIX_TERMIOS is not set -# CONFIG_RT_USING_POSIX_GETLINE is not set # CONFIG_RT_USING_POSIX_AIO is not set -CONFIG_RT_LIBC_USING_TIME=y -# CONFIG_RT_USING_MODULE is not set -CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8 +# CONFIG_RT_USING_PTHREADS is not set # # Network @@ -380,6 +387,7 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y # CONFIG_PKG_USING_LORA_GW_DRIVER_LIB is not set # CONFIG_PKG_USING_LORA_PKT_SNIFFER is not set # CONFIG_PKG_USING_HM is not set +# CONFIG_PKG_USING_SMALL_MODBUS is not set # # security packages @@ -401,15 +409,15 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y # # multimedia packages # -# CONFIG_PKG_USING_OPENMV is not set -# CONFIG_PKG_USING_MUPDF is not set -# CONFIG_PKG_USING_STEMWIN is not set # -# lvgl: powerful and easy-to-use embedded GUI library +# LVGL: powerful and easy-to-use embedded GUI library # # CONFIG_PKG_USING_LITTLEVGL2RTT is not set # CONFIG_PKG_USING_LVGL is not set +# CONFIG_PKG_USING_OPENMV is not set +# CONFIG_PKG_USING_MUPDF is not set +# CONFIG_PKG_USING_STEMWIN is not set # CONFIG_PKG_USING_WAVPLAYER is not set # CONFIG_PKG_USING_TJPGD is not set # CONFIG_PKG_USING_PDFGEN is not set @@ -481,6 +489,13 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y # CONFIG_PKG_USING_QFPLIB_M0_TINY is not set # CONFIG_PKG_USING_QFPLIB_M3 is not set +# +# CMSIS: ARM Cortex-M Microcontroller Software Interface Standard +# +# CONFIG_PKG_USING_CMSIS_5 is not set +# CONFIG_PKG_USING_CMSIS_5_AUX is not set +# CONFIG_PKG_USING_CMSIS_RTOS2 is not set + # # Micrium: Micrium software products porting for RT-Thread # @@ -498,7 +513,6 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y # CONFIG_PKG_USING_FLASHDB is not set # CONFIG_PKG_USING_SQLITE is not set # CONFIG_PKG_USING_RTI is not set -# CONFIG_PKG_USING_CMSIS is not set # CONFIG_PKG_USING_DFS_YAFFS is not set # CONFIG_PKG_USING_LITTLEFS is not set # CONFIG_PKG_USING_DFS_JFFS2 is not set @@ -604,6 +618,7 @@ CONFIG_PKG_KENDRYTE_SDK_VERNUM=0x0057 # CONFIG_PKG_USING_MISAKA_RGB_BLING is not set # CONFIG_PKG_USING_BL_MCU_SDK is not set # CONFIG_PKG_USING_SOFT_SERIAL is not set +# CONFIG_PKG_USING_MB85RS16 is not set # # AI packages @@ -672,6 +687,10 @@ CONFIG_PKG_KENDRYTE_SDK_VERNUM=0x0057 # CONFIG_PKG_USING_COWSAY is not set # CONFIG_PKG_USING_TERMBOX is not set CONFIG_BOARD_K210_EVB=y + +# +# Hardware Drivers Config +# CONFIG_BSP_USING_UART_HS=y # @@ -704,6 +723,7 @@ CONFIG_BSP_LCD_BACKLIGHT_ACTIVE_LOW=y CONFIG_BSP_LCD_CLK_FREQ=15000000 # CONFIG_BSP_BOARD_KD233 is not set CONFIG_BSP_BOARD_K210_OPENMV_TEST=y +# CONFIG_BSP_BOARD_K210_DRACO is not set # CONFIG_BSP_BOARD_USER is not set CONFIG_BSP_LCD_X_MAX=240 CONFIG_BSP_LCD_Y_MAX=320 diff --git a/bsp/k210/rtconfig.h b/bsp/k210/rtconfig.h index 0a724573dc..fccbcdc399 100644 --- a/bsp/k210/rtconfig.h +++ b/bsp/k210/rtconfig.h @@ -130,9 +130,10 @@ /* POSIX layer and C standard library */ #define RT_USING_LIBC -#define RT_USING_POSIX #define RT_LIBC_USING_TIME #define RT_LIBC_DEFAULT_TIMEZONE 8 +#define RT_USING_POSIX +#define RT_USING_POSIX_DELAY /* Network */ @@ -194,8 +195,7 @@ /* multimedia packages */ - -/* lvgl: powerful and easy-to-use embedded GUI library */ +/* LVGL: powerful and easy-to-use embedded GUI library */ /* u8g2: a monochrome graphic library */ @@ -209,6 +209,9 @@ /* acceleration: Assembly language or algorithmic acceleration packages */ +/* CMSIS: ARM Cortex-M Microcontroller Software Interface Standard */ + + /* Micrium: Micrium software products porting for RT-Thread */ @@ -229,6 +232,9 @@ /* entertainment: terminal games and other interesting software packages */ #define BOARD_K210_EVB + +/* Hardware Drivers Config */ + #define BSP_USING_UART_HS /* General Purpose UARTs */ diff --git a/components/libc/Kconfig b/components/libc/Kconfig index 4506001d42..b70e0162fb 100644 --- a/components/libc/Kconfig +++ b/components/libc/Kconfig @@ -38,13 +38,13 @@ config RT_LIBC_DEFAULT_TIMEZONE default 8 config RT_USING_POSIX - bool "Enable basic POSIX layer, open/read/write/close etc" + bool "Enable basic POSIX layer, open()/read()/write()/close() etc" select RT_USING_DFS default n if RT_USING_POSIX config RT_USING_POSIX_STDIO - bool "Enable standard I/O" + bool "Enable standard I/O, STDOUT_FILENO/STDIN_FILENO/STDERR_FILENO" select RT_USING_DFS select RT_USING_DFS_DEVFS default n @@ -61,15 +61,15 @@ if RT_USING_POSIX default n config RT_USING_POSIX_DELAY - bool "Enable delay functions" + bool "Enable delay APIs, sleep()/usleep()/msleep() etc" default n config RT_USING_POSIX_GETLINE - bool "Enable getline()/getdelim() APIs" + bool "Enable getline()/getdelim()" default n config RT_USING_POSIX_MMAP - bool "Enable mmap() API" + bool "Enable mmap()" select RT_USING_DFS default n @@ -78,7 +78,7 @@ if RT_USING_POSIX default n config RT_USING_POSIX_AIO - bool "Enable AIO" + bool "Enable AIO APIs" default n endif diff --git a/components/libc/posix/src/SConscript b/components/libc/posix/src/SConscript index 0f5d0e9911..78a2a933ed 100644 --- a/components/libc/posix/src/SConscript +++ b/components/libc/posix/src/SConscript @@ -2,13 +2,16 @@ from building import * -src = ['unistd.c', 'delay.c'] +src = ['unistd.c'] cwd = GetCurrentDir() CPPPATH = [cwd] if GetDepend('RT_USING_POSIX_STDIO'): src += ['libc.c'] +if GetDepend('RT_USING_POSIX_DELAY'): + src += ['delay.c'] + if GetDepend('RT_USING_POSIX_POLL'): src += ['poll.c'] -- cgit v1.3.1