diff options
| author | cliff-cmc <[email protected]> | 2021-02-26 11:09:27 +0800 |
|---|---|---|
| committer | Cliff Chen <[email protected]> | 2021-02-26 11:45:19 +0800 |
| commit | eea0c3d74a40f73235da45c6f77e8b411ac94cf2 (patch) | |
| tree | a6906f1aed7118ab53dbe18f2ee4727a754583af /components/libc/compilers/armlibc | |
| parent | 1a9ecf27f31277750d92c921b62503f75275e122 (diff) | |
| parent | fae0fa8eea4c0e797940bf1eddc8ee6c1711734a (diff) | |
Add memtrace command for memheap.c
Diffstat (limited to 'components/libc/compilers/armlibc')
| -rw-r--r-- | components/libc/compilers/armlibc/README.md | 9 | ||||
| -rw-r--r-- | components/libc/compilers/armlibc/fcntl.h | 2 | ||||
| -rw-r--r-- | components/libc/compilers/armlibc/libc_syms.c | 7 | ||||
| -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/types.h | 16 | ||||
| -rw-r--r-- | components/libc/compilers/armlibc/sys/unistd.h | 36 | ||||
| -rw-r--r-- | components/libc/compilers/armlibc/syscalls.c (renamed from components/libc/compilers/armlibc/stubs.c) | 60 | ||||
| -rw-r--r-- | components/libc/compilers/armlibc/unistd.h | 1 |
8 files changed, 110 insertions, 29 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/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_syms.c b/components/libc/compilers/armlibc/libc_syms.c index 0e1c42d899..a2e8af17f1 100644 --- a/components/libc/compilers/armlibc/libc_syms.c +++ b/components/libc/compilers/armlibc/libc_syms.c @@ -10,8 +10,6 @@ #include <stdlib.h> #include <string.h> #include <ctype.h> -#include <time.h> - #include <rtm.h> /* some export routines for module */ @@ -35,11 +33,6 @@ RTM_EXPORT(memchr); RTM_EXPORT(toupper); RTM_EXPORT(atoi); -#ifdef RT_USING_RTC -RTM_EXPORT(localtime); -RTM_EXPORT(time); -#endif - /* import the full stdio for printf */ #if defined(RT_USING_MODULE) && defined(__MICROLIB) #error "[RT_USING_LIBC] Please use standard libc but not microlib." 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/types.h b/components/libc/compilers/armlibc/sys/types.h index 001ace4dd2..d1e457b36f 100644 --- a/components/libc/compilers/armlibc/sys/types.h +++ b/components/libc/compilers/armlibc/sys/types.h @@ -5,20 +5,24 @@ * * 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> -#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 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; #ifndef ARCH_CPU_64BIT -typedef signed int ssize_t; /* Used for a count of bytes or an error indication. */ +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. */ +typedef long signed int ssize_t; /* Used for a count of bytes or an error indication. */ #endif +typedef unsigned long useconds_t; /* microseconds (unsigned) */ #endif diff --git a/components/libc/compilers/armlibc/sys/unistd.h b/components/libc/compilers/armlibc/sys/unistd.h index 33f0561e72..ee1e1c4db9 100644 --- a/components/libc/compilers/armlibc/sys/unistd.h +++ b/components/libc/compilers/armlibc/sys/unistd.h @@ -5,11 +5,13 @@ * * Change Logs: * Date Author Notes + * 2020-12-16 Meco Man add usleep */ #ifndef _SYS_UNISTD_H #define _SYS_UNISTD_H -#include <rtthread.h> +#include <rtconfig.h> +#include "types.h" #ifdef RT_USING_DFS @@ -36,14 +38,46 @@ #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/armlibc/stubs.c b/components/libc/compilers/armlibc/syscalls.c index b6ffb37b0f..8addb3e163 100644 --- a/components/libc/compilers/armlibc/stubs.c +++ b/components/libc/compilers/armlibc/syscalls.c @@ -9,16 +9,21 @@ * 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 + * 2020-02-13 Meco Man re-implement exit() and abort() + * 2020-02-14 Meco Man implement _sys_tmpnam() + * 2020-02-25 Meco Man add multithreaded protection */ #include <string.h> #include <rt_sys.h> -#include "rtthread.h" +#include <rtthread.h> #include "libc.h" #ifdef RT_USING_DFS -#include "dfs_posix.h" +#include <dfs_posix.h> #endif #ifdef __CLANG_ARM @@ -37,6 +42,36 @@ const char __stdin_name[] = "STDIN"; const char __stdout_name[] = "STDOUT"; const char __stderr_name[] = "STDERR"; +#ifdef RT_USING_HEAP +int _mutex_initialize(rt_mutex_t *m) +{ + *m = rt_mutex_create("_mutex_", RT_IPC_FLAG_PRIO); + if(*m == RT_NULL) + { + return 0; + } + else + { + return 1; + } +} + +void _mutex_acquire(rt_mutex_t *m) +{ + rt_mutex_take(*m, RT_WAITING_FOREVER); +} + +void _mutex_release(rt_mutex_t *m) +{ + rt_mutex_release(*m); +} + +void _mutex_free(rt_mutex_t *m) +{ + rt_mutex_delete(*m); +} +#endif + /** * required by fopen() and freopen(). * @@ -231,7 +266,8 @@ int _sys_seek(FILEHANDLE fh, long pos) */ int _sys_tmpnam(char *name, int fileno, unsigned maxlength) { - return -1; + rt_snprintf(name, maxlength, "tem%03d", fileno); + return 1; } char *_sys_command_string(char *cmd, int len) @@ -251,10 +287,12 @@ void _ttywrch(int ch) #endif } +/* for exit() and abort() */ RT_WEAK void _sys_exit(int return_code) { - /* TODO: perhaps exit the thread which is invoking this function */ - while (1); + extern void __rt_libc_exit(int status); + __rt_libc_exit(return_code); + while(1); } /** @@ -265,16 +303,16 @@ RT_WEAK void _sys_exit(int return_code) */ long _sys_flen(FILEHANDLE fh) { +#ifdef RT_USING_DFS struct stat stat; - + if (fh < STDERR) return -1; -#ifndef RT_USING_DFS - return -1; -#else fstat(fh, &stat); return stat.st_size; +#else + return -1; #endif } @@ -300,8 +338,8 @@ int remove(const char *filename) #else int system(const char *string) { - RT_ASSERT(0); - for (;;); + extern int __rt_libc_system(const char *string); + return __rt_libc_system(string); } #endif 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" + |
