summaryrefslogtreecommitdiff
path: root/components/libc/compilers/armlibc
diff options
context:
space:
mode:
authoryangjie11 <[email protected]>2020-11-18 09:56:35 +0800
committerGitHub <[email protected]>2020-11-18 09:56:35 +0800
commitd4a682e8d97fa131e5a8d795f8c5451d55cdd5b0 (patch)
tree4773b40cb012475c5daf74bfd55707e141477669 /components/libc/compilers/armlibc
parent2b98f4720c827ae1850df78299f6b273d568c8c7 (diff)
parent2ef3c9d861f55253620996a94831a4be31ca6620 (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.md9
-rw-r--r--components/libc/compilers/armlibc/SConscript2
-rw-r--r--components/libc/compilers/armlibc/fcntl.h2
-rw-r--r--components/libc/compilers/armlibc/libc.h10
-rw-r--r--components/libc/compilers/armlibc/stubs.c19
-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.h54
-rw-r--r--components/libc/compilers/armlibc/sys/types.h14
-rw-r--r--components/libc/compilers/armlibc/sys/unistd.h22
-rw-r--r--components/libc/compilers/armlibc/time.c85
-rw-r--r--components/libc/compilers/armlibc/unistd.h1
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"
+