Browse Source

[libc][time] 修复数据类型报警

Meco Man 3 years ago
parent
commit
71f48266ff
2 changed files with 31 additions and 29 deletions
  1. 21 18
      components/libc/compilers/common/sys/time.h
  2. 10 11
      components/libc/compilers/common/time.c

+ 21 - 18
components/libc/compilers/common/sys/time.h

@@ -12,7 +12,8 @@
 #define __SYS_TIME_H__
 
 #include <rtconfig.h>
-#include <rtdef.h>
+#include <sys/types.h>
+#include <stdint.h>
 #include <time.h>
 
 #ifdef __cplusplus
@@ -32,22 +33,19 @@ extern "C" {
 #define DST_TUR     9   /* Turkey */
 #define DST_AUSTALT 10  /* Australian style with shift in 1986 */
 
-struct timezone {
-  int tz_minuteswest;   /* minutes west of Greenwich */
-  int tz_dsttime;       /* type of dst correction */
+struct timezone
+{
+    int tz_minuteswest;   /* minutes west of Greenwich */
+    int tz_dsttime;       /* type of dst correction */
 };
 
-void rt_tz_set(rt_int8_t tz);
-rt_int8_t rt_tz_get(void);
-rt_int8_t rt_tz_is_dst(void);
-
 /*
  * Structure returned by gettimeofday(2) system call,
  * and used in other calls.
  */
 #ifndef _TIMEVAL_DEFINED
 #define _TIMEVAL_DEFINED
-#if !(defined(_WIN32))
+#if !defined(_WIN32)
 struct timeval
 {
     time_t      tv_sec;     /* seconds */
@@ -56,6 +54,16 @@ struct timeval
 #endif
 #endif /* _TIMEVAL_DEFINED */
 
+#if !(defined(__GNUC__) && !defined(__ARMCC_VERSION)/*GCC*/) && \
+    !(defined(__ICCARM__) && (__VER__ >= 8010001)) && \
+    !defined(_WIN32)
+struct timespec
+{
+    time_t  tv_sec;     /* seconds */
+    long    tv_nsec;    /* and nanoseconds */
+};
+#endif
+
 int stime(const time_t *t);
 time_t timegm(struct tm * const t);
 int gettimeofday(struct timeval *tv, struct timezone *tz);
@@ -65,15 +73,6 @@ struct tm *gmtime_r(const time_t *timep, struct tm *r);
 #endif
 
 #ifdef RT_USING_POSIX
-#include <sys/types.h>
-
-#if !(defined(__GNUC__) && !defined(__ARMCC_VERSION)/*GCC*/) && !(defined(__ICCARM__) && (__VER__ >= 8010001)) && !defined(_WIN32)
-struct timespec {
-    time_t  tv_sec;     /* seconds */
-    long    tv_nsec;    /* and nanoseconds */
-};
-#endif
-
 /* POSIX clock and timer */
 #define MILLISECOND_PER_SECOND  1000UL
 #define MICROSECOND_PER_SECOND  1000000UL
@@ -106,6 +105,10 @@ int clock_settime (clockid_t clockid, const struct timespec *tp);
 int rt_timespec_to_tick(const struct timespec *time);
 #endif /* RT_USING_POSIX */
 
+void tz_set(int8_t tz);
+int8_t tz_get(void);
+int8_t tz_is_dst(void);
+
 #ifdef __cplusplus
 }
 #endif

+ 10 - 11
components/libc/compilers/common/time.c

@@ -199,7 +199,7 @@ struct tm *gmtime_r(const time_t *timep, struct tm *r)
     r->tm_mon = i;
     r->tm_mday += work - __spm[i];
 
-    r->tm_isdst = rt_tz_is_dst();
+    r->tm_isdst = tz_is_dst();
     return r;
 }
 RTM_EXPORT(gmtime_r);
@@ -215,7 +215,7 @@ struct tm* localtime_r(const time_t* t, struct tm* r)
 {
     time_t local_tz;
 
-    local_tz = *t + rt_tz_get() * 3600;
+    local_tz = *t + tz_get() * 3600;
     return gmtime_r(&local_tz, r);
 }
 RTM_EXPORT(localtime_r);
@@ -232,7 +232,7 @@ time_t mktime(struct tm * const t)
     time_t timestamp;
 
     timestamp = timegm(t);
-    timestamp = timestamp - 3600 * rt_tz_get();
+    timestamp = timestamp - 3600 * tz_get();
     return timestamp;
 }
 RTM_EXPORT(mktime);
@@ -423,7 +423,7 @@ int gettimeofday(struct timeval *tv, struct timezone *tz)
     if(tz != RT_NULL)
     {
         tz->tz_dsttime = DST_NONE;
-        tz->tz_minuteswest = -(rt_tz_get() * 60);
+        tz->tz_minuteswest = -(tz_get() * 60);
     }
 
     if (tv != RT_NULL && get_timeval(tv) == RT_EOK)
@@ -446,7 +446,6 @@ int settimeofday(const struct timeval *tv, const struct timezone *tz)
      * Thus, the following is purely of historic interest.
      */
     if (tv != RT_NULL
-        && tv->tv_sec >= 0
         && tv->tv_usec >= 0
         && set_timeval((struct timeval *)tv) == RT_EOK)
     {
@@ -676,22 +675,22 @@ RTM_EXPORT(rt_timespec_to_tick);
 #define RT_LIBC_DEFAULT_TIMEZONE    8
 #endif
 
-static volatile rt_int8_t rt_current_timezone = RT_LIBC_DEFAULT_TIMEZONE;
+static volatile int8_t _current_timezone = RT_LIBC_DEFAULT_TIMEZONE;
 
-void rt_tz_set(rt_int8_t tz)
+void tz_set(int8_t tz)
 {
     register rt_base_t level;
     level = rt_hw_interrupt_disable();
-    rt_current_timezone = tz;
+    _current_timezone = tz;
     rt_hw_interrupt_enable(level);
 }
 
-rt_int8_t rt_tz_get(void)
+int8_t tz_get(void)
 {
-    return rt_current_timezone;
+    return _current_timezone;
 }
 
-rt_int8_t rt_tz_is_dst(void)
+int8_t tz_is_dst(void)
 {
     return 0;
 }