summaryrefslogtreecommitdiff
path: root/components/libc/compilers/common
diff options
context:
space:
mode:
authorzhangjun <[email protected]>2019-09-10 09:59:11 +0800
committerzhangjun <[email protected]>2019-09-10 09:59:11 +0800
commita186ada6da915062895518e565a1dc52a0ff44dc (patch)
tree5312042a642749da46fe968a8c1aa7710b24d461 /components/libc/compilers/common
parent4ba5fe5ab5e7f38ff36c579fa5406d9c113a9e8d (diff)
[components][libc][compilers]移动time相关头文件到common目录
Diffstat (limited to 'components/libc/compilers/common')
-rw-r--r--components/libc/compilers/common/sys/time.h60
-rw-r--r--components/libc/compilers/common/time.c32
2 files changed, 67 insertions, 25 deletions
diff --git a/components/libc/compilers/common/sys/time.h b/components/libc/compilers/common/sys/time.h
new file mode 100644
index 0000000000..1d68eeafa3
--- /dev/null
+++ b/components/libc/compilers/common/sys/time.h
@@ -0,0 +1,60 @@
+/*
+ * 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>
+
+#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 */
+
+/*
+ * Skip define timespec for IAR version over 8.10.1 where __VER__ is 8010001.
+ */
+#if defined ( __ICCARM__ ) && (__VER__ >= 8010001)
+#define _TIMESPEC_DEFINED
+#endif
+
+#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/common/time.c b/components/libc/compilers/common/time.c
index 097faedfe5..10682ae002 100644
--- a/components/libc/compilers/common/time.c
+++ b/components/libc/compilers/common/time.c
@@ -8,7 +8,7 @@
* 2019-08-21 zhangjun copy from minilibc
*/
-#include <time.h>
+#include <sys/time.h>
#include <rtthread.h>
#if !defined (__IAR_SYSTEMS_ICC__)
@@ -213,44 +213,26 @@ char* ctime(const time_t *timep)
#endif /* __IAR_SYSTEMS_ICC__ */
-/*
- * Structure returned by gettimeofday(2) system call,
- * and used in other calls.
- */
-struct timeval {
- long tv_sec; /* seconds */
- long tv_usec; /* and microseconds */
-};
-
-#ifdef RT_USING_DEVICE
int gettimeofday(struct timeval *tp, void *ignore)
{
- time_t time;
+ time_t time = 0;
+#ifdef RT_USING_DEVICE
rt_device_t device;
-
device = rt_device_find("rtc");
RT_ASSERT(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;
-}
+#else
+ tv->tv_sec = 0;
+ tv->tv_usec = 0;
#endif
-#ifndef _gettimeofday
-/* Dummy function when hardware do not have RTC */
-int _gettimeofday( struct timeval *tv, void *ignore)
-{
- tv->tv_sec = 0; // convert to seconds
- tv->tv_usec = 0; // get remaining microseconds
- return 0; // return non-zero for error
+ return time;
}
-#endif
/**