Merge pull request #5077 from mysterywolf/time

[libc][time] 修复数据类型报警
This commit is contained in:
Bernard Xiong 2021-09-19 07:23:27 +08:00 committed by GitHub
commit 6d7ba2b856
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 31 additions and 29 deletions

View File

@ -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

View File

@ -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;
}