diff options
| author | Meco Jianting Man <[email protected]> | 2021-04-26 14:16:05 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2021-04-26 14:16:05 +0800 |
| commit | f90c522308192f306ec313e0ced1dad445a3c34c (patch) | |
| tree | 3356641027ad11bb9869442a1ad90490fab66252 /components/libc/compilers/common | |
| parent | 7935f892d26b91c0e78523a790c936666ae245e2 (diff) | |
| parent | 428946c6aecc7bda41a16acb8f0950411cc744b4 (diff) | |
Merge pull request #46 from RT-Thread/master
sycn
Diffstat (limited to 'components/libc/compilers/common')
| -rw-r--r-- | components/libc/compilers/common/SConscript | 6 | ||||
| -rw-r--r-- | components/libc/compilers/common/dirent.h | 65 | ||||
| -rw-r--r-- | components/libc/compilers/common/none-gcc/SConscript | 13 | ||||
| -rw-r--r-- | components/libc/compilers/common/none-gcc/fcntl.h | 18 | ||||
| -rw-r--r-- | components/libc/compilers/common/none-gcc/readme.md | 3 | ||||
| -rw-r--r-- | components/libc/compilers/common/none-gcc/sys/stat.h | 8 | ||||
| -rw-r--r-- | components/libc/compilers/common/none-gcc/sys/types.h | 36 | ||||
| -rw-r--r-- | components/libc/compilers/common/none-gcc/sys/unistd.h | 83 | ||||
| -rw-r--r-- | components/libc/compilers/common/none-gcc/unistd.h | 10 | ||||
| -rw-r--r-- | components/libc/compilers/common/readme.md | 2 | ||||
| -rw-r--r-- | components/libc/compilers/common/sys/ioctl.h | 5 | ||||
| -rw-r--r-- | components/libc/compilers/common/sys/mman.h | 60 | ||||
| -rw-r--r-- | components/libc/compilers/common/sys/statfs.h | 21 | ||||
| -rw-r--r-- | components/libc/compilers/common/sys/termios.h | 8 |
14 files changed, 335 insertions, 3 deletions
diff --git a/components/libc/compilers/common/SConscript b/components/libc/compilers/common/SConscript index 319e1a3555..d9de1cf17f 100644 --- a/components/libc/compilers/common/SConscript +++ b/components/libc/compilers/common/SConscript @@ -23,5 +23,9 @@ else: if GetDepend('RT_USING_LIBC') or GetDepend('RT_LIBC_USING_TIME'): group = DefineGroup('libc', src, depend = [''], CPPPATH = CPPPATH, CPPDEFINES = CPPDEFINES) - + list = os.listdir(cwd) + for d in list: + path = os.path.join(cwd, d) + if os.path.isfile(os.path.join(path, 'SConscript')): + group = group + SConscript(os.path.join(d, 'SConscript')) Return('group') diff --git a/components/libc/compilers/common/dirent.h b/components/libc/compilers/common/dirent.h new file mode 100644 index 0000000000..bfba586093 --- /dev/null +++ b/components/libc/compilers/common/dirent.h @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + */ +#ifndef __RTT_DIRENT_H__ +#define __RTT_DIRENT_H__ + +#include <rtthread.h> + +/* +* dirent.h - format of directory entries + * Ref: http://www.opengroup.org/onlinepubs/009695399/basedefs/dirent.h.html + */ + +/* File types */ +#define FT_REGULAR 0 /* regular file */ +#define FT_SOCKET 1 /* socket file */ +#define FT_DIRECTORY 2 /* directory */ +#define FT_USER 3 /* user defined */ + +#define DT_UNKNOWN 0x00 +#define DT_REG 0x01 +#define DT_DIR 0x02 + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef HAVE_DIR_STRUCTURE +typedef struct +{ + int fd; /* directory file */ + char buf[512]; + int num; + int cur; +} DIR; +#endif + +#ifndef HAVE_DIRENT_STRUCTURE +struct dirent +{ + rt_uint8_t d_type; /* The type of the file */ + rt_uint8_t d_namlen; /* The length of the not including the terminating null file name */ + rt_uint16_t d_reclen; /* length of this record */ + char d_name[256]; /* The null-terminated file name */ +}; +#endif + +int closedir(DIR *); +DIR *opendir(const char *); +struct dirent *readdir(DIR *); +int readdir_r(DIR *, struct dirent *, struct dirent **); +void rewinddir(DIR *); +void seekdir(DIR *, long int); +long telldir(DIR *); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/components/libc/compilers/common/none-gcc/SConscript b/components/libc/compilers/common/none-gcc/SConscript new file mode 100644 index 0000000000..346e69b478 --- /dev/null +++ b/components/libc/compilers/common/none-gcc/SConscript @@ -0,0 +1,13 @@ +from building import * + +Import('rtconfig') + +src = [] +cwd = GetCurrentDir() +CPPPATH = [cwd] +group = [] +src += Glob('*.c') + +if rtconfig.PLATFORM != 'gcc': + group = DefineGroup('libc', src, depend = ['RT_USING_LIBC'], CPPPATH = CPPPATH) +Return('group') diff --git a/components/libc/compilers/common/none-gcc/fcntl.h b/components/libc/compilers/common/none-gcc/fcntl.h new file mode 100644 index 0000000000..f247b926e9 --- /dev/null +++ b/components/libc/compilers/common/none-gcc/fcntl.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + */ +#ifndef FCNTL_H__ +#define FCNTL_H__ + +#include <rtconfig.h> + +#ifdef RT_USING_DFS +#include <dfs_posix.h> +#endif + +#endif diff --git a/components/libc/compilers/common/none-gcc/readme.md b/components/libc/compilers/common/none-gcc/readme.md new file mode 100644 index 0000000000..b10940d003 --- /dev/null +++ b/components/libc/compilers/common/none-gcc/readme.md @@ -0,0 +1,3 @@ +## Attentions + +This folder is "common" for toolchains excluding gcc.
\ No newline at end of file diff --git a/components/libc/compilers/common/none-gcc/sys/stat.h b/components/libc/compilers/common/none-gcc/sys/stat.h new file mode 100644 index 0000000000..c4b42083c4 --- /dev/null +++ b/components/libc/compilers/common/none-gcc/sys/stat.h @@ -0,0 +1,8 @@ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + */ diff --git a/components/libc/compilers/common/none-gcc/sys/types.h b/components/libc/compilers/common/none-gcc/sys/types.h new file mode 100644 index 0000000000..7222326a2a --- /dev/null +++ b/components/libc/compilers/common/none-gcc/sys/types.h @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2020-09-05 Meco Man fix bugs + * 2020-12-16 Meco Man add useconds_t + */ +#ifndef __TYPES_H__ +#define __TYPES_H__ + +#include <stdint.h> + +typedef int32_t clockid_t; +typedef int32_t key_t; /* Used for interprocess communication. */ +typedef int pid_t; /* Used for process IDs and process group IDs. */ +typedef unsigned short uid_t; +typedef unsigned short gid_t; +typedef signed long off_t; +typedef int mode_t; +#ifndef ARCH_CPU_64BIT +typedef signed int ssize_t; /* Used for a count of bytes or an error indication. */ +#else +typedef long signed int ssize_t; /* Used for a count of bytes or an error indication. */ +#endif +typedef unsigned long useconds_t; /* microseconds (unsigned) */ + +typedef unsigned long dev_t; + +typedef unsigned int u_int; +typedef unsigned char u_char; +typedef unsigned long u_long; + +#endif diff --git a/components/libc/compilers/common/none-gcc/sys/unistd.h b/components/libc/compilers/common/none-gcc/sys/unistd.h new file mode 100644 index 0000000000..7752a1caf7 --- /dev/null +++ b/components/libc/compilers/common/none-gcc/sys/unistd.h @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2020-12-16 Meco Man add usleep + */ +#ifndef _SYS_UNISTD_H +#define _SYS_UNISTD_H + +#include <rtconfig.h> +#include "types.h" + +#ifdef RT_USING_DFS + +#define STDIN_FILENO 0 /* standard input file descriptor */ +#define STDOUT_FILENO 1 /* standard output file descriptor */ +#define STDERR_FILENO 2 /* standard error file descriptor */ + +#include <dfs_posix.h> +#else +#define _FREAD 0x0001 /* read enabled */ +#define _FWRITE 0x0002 /* write enabled */ +#define _FAPPEND 0x0008 /* append (writes guaranteed at the end) */ +#define _FMARK 0x0010 /* internal; mark during gc() */ +#define _FDEFER 0x0020 /* internal; defer for next gc pass */ +#define _FASYNC 0x0040 /* signal pgrp when data ready */ +#define _FSHLOCK 0x0080 /* BSD flock() shared lock present */ +#define _FEXLOCK 0x0100 /* BSD flock() exclusive lock present */ +#define _FCREAT 0x0200 /* open with file create */ +#define _FTRUNC 0x0400 /* open with truncation */ +#define _FEXCL 0x0800 /* error on open if file exists */ +#define _FNBIO 0x1000 /* non blocking I/O (sys5 style) */ +#define _FSYNC 0x2000 /* do all writes synchronously */ +#define _FNONBLOCK 0x4000 /* non blocking I/O (POSIX style) */ +#define _FNDELAY _FNONBLOCK /* non blocking I/O (4.2 style) */ +#define _FNOCTTY 0x8000 /* don't assign a ctty on this open */ + + +#ifndef O_RDONLY +#define O_RDONLY 0 /* +1 == FREAD */ +#endif +#ifndef O_WRONLY +#define O_WRONLY 1 /* +1 == FWRITE */ +#endif +#ifndef O_RDWR +#define O_RDWR 2 /* +1 == FREAD|FWRITE */ +#endif +#ifndef O_APPEND +#define O_APPEND _FAPPEND +#endif +#ifndef O_CREAT +#define O_CREAT _FCREAT +#endif +#ifndef O_TRUNC +#define O_TRUNC _FTRUNC +#endif +#ifndef O_EXCL +#define O_EXCL _FEXCL +#endif +#ifndef O_SYNC +#define O_SYNC _FSYNC +#endif + +#endif + + +int isatty (int fd); +char * ttyname (int desc); + +unsigned int sleep(unsigned int seconds); +int usleep(useconds_t usec); + +pid_t getpid(void); +pid_t getppid(void); +uid_t getuid(void); +uid_t geteuid(void); +gid_t getgid(void); +gid_t getegid(void); + +#endif /* _SYS_UNISTD_H */ diff --git a/components/libc/compilers/common/none-gcc/unistd.h b/components/libc/compilers/common/none-gcc/unistd.h new file mode 100644 index 0000000000..cd77a12e3b --- /dev/null +++ b/components/libc/compilers/common/none-gcc/unistd.h @@ -0,0 +1,10 @@ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + */ +#include "sys/unistd.h" + diff --git a/components/libc/compilers/common/readme.md b/components/libc/compilers/common/readme.md index 81bb005d0a..856ddeb045 100644 --- a/components/libc/compilers/common/readme.md +++ b/components/libc/compilers/common/readme.md @@ -1,6 +1,6 @@ ## Attentions -1. This folder is "common" for armlibc newlibc and dlib. +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: diff --git a/components/libc/compilers/common/sys/ioctl.h b/components/libc/compilers/common/sys/ioctl.h index df17b19a61..648d90230d 100644 --- a/components/libc/compilers/common/sys/ioctl.h +++ b/components/libc/compilers/common/sys/ioctl.h @@ -10,6 +10,9 @@ #ifndef _SYS_IOCTL_H #define _SYS_IOCTL_H - +#include <rtconfig.h> +#ifdef RT_USING_POSIX +#include <dfs_posix.h> +#endif #endif diff --git a/components/libc/compilers/common/sys/mman.h b/components/libc/compilers/common/sys/mman.h new file mode 100644 index 0000000000..a9235d61f0 --- /dev/null +++ b/components/libc/compilers/common/sys/mman.h @@ -0,0 +1,60 @@ +/* + * 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. + */ + +#ifndef _SYS_MMAN_H +#define _SYS_MMAN_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include <sys/types.h> + +#define MAP_FAILED ((void *) -1) + +#define MAP_SHARED 0x01 +#define MAP_PRIVATE 0x02 +#define MAP_TYPE 0x0f +#define MAP_FIXED 0x10 +#define MAP_ANON 0x20 +#define MAP_ANONYMOUS MAP_ANON +#define MAP_NORESERVE 0x4000 +#define MAP_GROWSDOWN 0x0100 +#define MAP_DENYWRITE 0x0800 +#define MAP_EXECUTABLE 0x1000 +#define MAP_LOCKED 0x2000 +#define MAP_POPULATE 0x8000 +#define MAP_NONBLOCK 0x10000 +#define MAP_STACK 0x20000 +#define MAP_HUGETLB 0x40000 +#define MAP_FILE 0 + +#define PROT_NONE 0 +#define PROT_READ 1 +#define PROT_WRITE 2 +#define PROT_EXEC 4 +#define PROT_GROWSDOWN 0x01000000 +#define PROT_GROWSUP 0x02000000 + +#define MS_ASYNC 1 +#define MS_INVALIDATE 2 +#define MS_SYNC 4 + +#define MCL_CURRENT 1 +#define MCL_FUTURE 2 +#define MCL_ONFAULT 4 + +void *mmap (void *start, size_t len, int prot, int flags, int fd, off_t off); +int munmap (void *start, size_t len); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/components/libc/compilers/common/sys/statfs.h b/components/libc/compilers/common/sys/statfs.h new file mode 100644 index 0000000000..0996af9a18 --- /dev/null +++ b/components/libc/compilers/common/sys/statfs.h @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + */ +#ifndef __RTT_STATFS_H__ +#define __RTT_STATFS_H__ + +#include <rtthread.h> + +struct statfs +{ + rt_size_t f_bsize; /* block size */ + rt_size_t f_blocks; /* total data blocks in file system */ + rt_size_t f_bfree; /* free blocks in file system */ +}; + +#endif diff --git a/components/libc/compilers/common/sys/termios.h b/components/libc/compilers/common/sys/termios.h new file mode 100644 index 0000000000..c4b42083c4 --- /dev/null +++ b/components/libc/compilers/common/sys/termios.h @@ -0,0 +1,8 @@ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + */ |
