diff options
| author | yangjie11 <[email protected]> | 2020-11-18 09:56:35 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2020-11-18 09:56:35 +0800 |
| commit | d4a682e8d97fa131e5a8d795f8c5451d55cdd5b0 (patch) | |
| tree | 4773b40cb012475c5daf74bfd55707e141477669 /components/libc/compilers/armlibc | |
| parent | 2b98f4720c827ae1850df78299f6b273d568c8c7 (diff) | |
| parent | 2ef3c9d861f55253620996a94831a4be31ca6620 (diff) | |
Merge pull request #3 from RT-Thread/master
sync
Diffstat (limited to 'components/libc/compilers/armlibc')
| -rw-r--r-- | components/libc/compilers/armlibc/README.md | 9 | ||||
| -rw-r--r-- | components/libc/compilers/armlibc/SConscript | 2 | ||||
| -rw-r--r-- | components/libc/compilers/armlibc/fcntl.h | 2 | ||||
| -rw-r--r-- | components/libc/compilers/armlibc/libc.h | 10 | ||||
| -rw-r--r-- | components/libc/compilers/armlibc/stubs.c | 19 | ||||
| -rw-r--r-- | components/libc/compilers/armlibc/sys/ioctl.h (renamed from components/libc/compilers/armlibc/termios.h) | 8 | ||||
| -rw-r--r-- | components/libc/compilers/armlibc/sys/time.h | 54 | ||||
| -rw-r--r-- | components/libc/compilers/armlibc/sys/types.h | 14 | ||||
| -rw-r--r-- | components/libc/compilers/armlibc/sys/unistd.h | 22 | ||||
| -rw-r--r-- | components/libc/compilers/armlibc/time.c | 85 | ||||
| -rw-r--r-- | components/libc/compilers/armlibc/unistd.h | 1 |
11 files changed, 73 insertions, 153 deletions
diff --git a/components/libc/compilers/armlibc/README.md b/components/libc/compilers/armlibc/README.md new file mode 100644 index 0000000000..4d2a73b6be --- /dev/null +++ b/components/libc/compilers/armlibc/README.md @@ -0,0 +1,9 @@ +# ARMLIB (Keil-MDK) porting for RT-Thread + +Please define RT_USING_LIBC and compile RT-Thread with Keil-MDK compiler. + + + +## More Information + +https://www.keil.com/support/man/docs/armlib/
\ No newline at end of file diff --git a/components/libc/compilers/armlibc/SConscript b/components/libc/compilers/armlibc/SConscript index 081efa7358..52f7a6d93a 100644 --- a/components/libc/compilers/armlibc/SConscript +++ b/components/libc/compilers/armlibc/SConscript @@ -14,7 +14,7 @@ if GetDepend('RT_USING_DFS') == False: if GetDepend('RT_USING_MODULE') == False: SrcRemove(src, ['libc_syms.c']) -if rtconfig.PLATFORM == 'armcc': +if rtconfig.PLATFORM == 'armcc' or rtconfig.PLATFORM == 'armclang': group = DefineGroup('libc', src, depend = ['RT_USING_LIBC'], CPPPATH = CPPPATH, CPPDEFINES = CPPDEFINES) diff --git a/components/libc/compilers/armlibc/fcntl.h b/components/libc/compilers/armlibc/fcntl.h index 80cf1b4409..3e650a8471 100644 --- a/components/libc/compilers/armlibc/fcntl.h +++ b/components/libc/compilers/armlibc/fcntl.h @@ -9,6 +9,8 @@ #ifndef FCNTL_H__ #define FCNTL_H__ +#include <rtconfig.h> + #ifdef RT_USING_DFS #include <dfs_posix.h> #endif diff --git a/components/libc/compilers/armlibc/libc.h b/components/libc/compilers/armlibc/libc.h index 158fe06c3e..b9b1b6212d 100644 --- a/components/libc/compilers/armlibc/libc.h +++ b/components/libc/compilers/armlibc/libc.h @@ -12,11 +12,17 @@ #include <stddef.h> +#ifdef __cplusplus +extern "C" { +#endif int libc_system_init(void); int libc_stdio_set_console(const char* device_name, int mode); int libc_stdio_get_console(void); -int libc_stdio_read (void *buffer, size_t size); -int libc_stdio_write(const void *buffer, size_t size); +int libc_stdio_read(void* buffer, size_t size); +int libc_stdio_write(const void* buffer, size_t size); +#ifdef __cplusplus +} +#endif #endif diff --git a/components/libc/compilers/armlibc/stubs.c b/components/libc/compilers/armlibc/stubs.c index 6e9f13d143..b4cc13799e 100644 --- a/components/libc/compilers/armlibc/stubs.c +++ b/components/libc/compilers/armlibc/stubs.c @@ -9,6 +9,8 @@ * 2013-11-24 aozima fixed _sys_read()/_sys_write() issues. * 2014-08-03 bernard If using msh, use system() implementation * in msh. + * 2020-08-05 Meco Man fixed _sys_flen() compiling-warning when + * RT_USING_DFS is not defined */ #include <string.h> @@ -251,7 +253,7 @@ void _ttywrch(int ch) #endif } -void _sys_exit(int return_code) +RT_WEAK void _sys_exit(int return_code) { /* TODO: perhaps exit the thread which is invoking this function */ while (1); @@ -265,12 +267,25 @@ void _sys_exit(int return_code) */ long _sys_flen(FILEHANDLE fh) { +#ifdef RT_USING_DFS + struct stat stat; + + if (fh < STDERR) + return -1; + + fstat(fh, &stat); + return stat.st_size; +#else return -1; +#endif } int _sys_istty(FILEHANDLE fh) { - return 0; + if((STDIN <= fh) && (fh <= STDERR)) + return 1; + else + return 0; } int remove(const char *filename) diff --git a/components/libc/compilers/armlibc/termios.h b/components/libc/compilers/armlibc/sys/ioctl.h index 1956121225..033a57014a 100644 --- a/components/libc/compilers/armlibc/termios.h +++ b/components/libc/compilers/armlibc/sys/ioctl.h @@ -5,11 +5,11 @@ * * Change Logs: * Date Author Notes + * 2020-09-01 Meco Man First Version */ -#ifndef _TERMIOS_H__ -#define _TERMIOS_H__ +#ifndef _SYS_IOCTL_H +#define _SYS_IOCTL_H + -#include <sys/types.h> -#include <posix_termios.h> #endif diff --git a/components/libc/compilers/armlibc/sys/time.h b/components/libc/compilers/armlibc/sys/time.h deleted file mode 100644 index bac122e183..0000000000 --- a/components/libc/compilers/armlibc/sys/time.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (c) 2006-2018, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - */ -#ifndef _SYS_TIME_H_ -#define _SYS_TIME_H_ - -#include <time.h> -#include <sys/types.h> - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef _TIMEVAL_DEFINED -#define _TIMEVAL_DEFINED -/* - * Structure returned by gettimeofday(2) system call, - * and used in other calls. - */ -struct timeval { - long tv_sec; /* seconds */ - long tv_usec; /* and microseconds */ -}; -#endif /* _TIMEVAL_DEFINED */ - -#ifndef _TIMESPEC_DEFINED -#define _TIMESPEC_DEFINED -/* - * Structure defined by POSIX.1b to be like a timeval. - */ -struct timespec { - time_t tv_sec; /* seconds */ - long tv_nsec; /* and nanoseconds */ -}; -#endif /* _TIMESPEC_DEFINED */ - -struct timezone { - int tz_minuteswest; /* minutes west of Greenwich */ - int tz_dsttime; /* type of dst correction */ -}; - -int gettimeofday(struct timeval *tp, void *ignore); -struct tm *gmtime_r(const time_t *timep, struct tm *r); - -#ifdef __cplusplus -} -#endif - -#endif /* _SYS_TIME_H_ */ diff --git a/components/libc/compilers/armlibc/sys/types.h b/components/libc/compilers/armlibc/sys/types.h index 4c76dfc429..2aad77c99d 100644 --- a/components/libc/compilers/armlibc/sys/types.h +++ b/components/libc/compilers/armlibc/sys/types.h @@ -5,16 +5,20 @@ * * Change Logs: * Date Author Notes + * 2020-09-05 Meco Man fix bugs */ #ifndef __TYPES_H__ #define __TYPES_H__ #include <stdint.h> -#include <rtthread.h> -typedef rt_int32_t clockid_t; -typedef rt_int32_t key_t; /* Used for interprocess communication. */ -typedef rt_int32_t pid_t; /* Used for process IDs and process group IDs. */ -typedef signed long ssize_t; /* Used for a count of bytes or an error indication. */ +typedef int32_t clockid_t; +typedef int32_t key_t; /* Used for interprocess communication. */ +typedef int32_t pid_t; /* Used for process IDs and process group IDs. */ +#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 #endif diff --git a/components/libc/compilers/armlibc/sys/unistd.h b/components/libc/compilers/armlibc/sys/unistd.h index 33f0561e72..524de2cf83 100644 --- a/components/libc/compilers/armlibc/sys/unistd.h +++ b/components/libc/compilers/armlibc/sys/unistd.h @@ -36,14 +36,36 @@ #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); + #endif /* _SYS_UNISTD_H */ diff --git a/components/libc/compilers/armlibc/time.c b/components/libc/compilers/armlibc/time.c deleted file mode 100644 index 29c5c6cdd2..0000000000 --- a/components/libc/compilers/armlibc/time.c +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright (c) 2006-2018, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - */ -#include <sys/time.h> -#include <rtthread.h> - -#ifdef RT_USING_DEVICE -int gettimeofday(struct timeval *tp, void *ignore) -{ - time_t time; - rt_device_t device; - - device = rt_device_find("rtc"); - if (device != RT_NULL) - { - rt_device_control(device, RT_DEVICE_CTRL_RTC_GET_TIME, &time); - if (tp != RT_NULL) - { - tp->tv_sec = time; - tp->tv_usec = 0; - } - - return time; - } - - return 0; -} -#endif - -/** - * Returns the current time. - * - * @param time_t * t the timestamp pointer, if not used, keep NULL. - * - * @return time_t return timestamp current. - * - */ -/* for IAR 6.2 later Compiler */ -#if defined (__IAR_SYSTEMS_ICC__) && (__VER__) >= 6020000 -#pragma module_name = "?time" -time_t (__time32)(time_t *t) /* Only supports 32-bit timestamp */ -#else -time_t time(time_t *t) -#endif -{ - time_t time_now = 0; - -#ifdef RT_USING_RTC - static rt_device_t device = RT_NULL; - - /* optimization: find rtc device only first. */ - if (device == RT_NULL) - { - device = rt_device_find("rtc"); - } - - /* read timestamp from RTC device. */ - if (device != RT_NULL) - { - if (rt_device_open(device, 0) == RT_EOK) - { - rt_device_control(device, RT_DEVICE_CTRL_RTC_GET_TIME, &time_now); - rt_device_close(device); - } - } -#endif /* RT_USING_RTC */ - - /* if t is not NULL, write timestamp to *t */ - if (t != RT_NULL) - { - *t = time_now; - } - - return time_now; -} - -RT_WEAK clock_t clock(void) -{ - return rt_tick_get(); -} diff --git a/components/libc/compilers/armlibc/unistd.h b/components/libc/compilers/armlibc/unistd.h index 70187722d8..736fc219a8 100644 --- a/components/libc/compilers/armlibc/unistd.h +++ b/components/libc/compilers/armlibc/unistd.h @@ -7,3 +7,4 @@ * Date Author Notes */ #include "sys/unistd.h" + |
