[libc][time] 修正POSIX 时间相关函数返回值错误

This commit is contained in:
Meco Man 2022-12-29 19:15:12 -05:00 committed by Man, Jianting (Meco)
parent 76b5d0dfcf
commit 4ce39dd744
1 changed files with 37 additions and 37 deletions

View File

@ -379,7 +379,7 @@ int stime(const time_t *t)
if (t == RT_NULL) if (t == RT_NULL)
{ {
rt_set_errno(EFAULT); rt_set_errno(EFAULT);
return -RT_ERROR; return -1;
} }
tv.tv_sec = *t; tv.tv_sec = *t;
@ -390,7 +390,7 @@ int stime(const time_t *t)
else else
{ {
rt_set_errno(EFAULT); rt_set_errno(EFAULT);
return -RT_ERROR; return -1;
} }
} }
RTM_EXPORT(stime); RTM_EXPORT(stime);
@ -404,7 +404,7 @@ time_t timegm(struct tm * const t)
if(t == RT_NULL) if(t == RT_NULL)
{ {
rt_set_errno(EFAULT); rt_set_errno(EFAULT);
return (time_t)-RT_ERROR; return (time_t)-1;
} }
years = (time_t)t->tm_year - 70; years = (time_t)t->tm_year - 70;
@ -446,7 +446,7 @@ time_t timegm(struct tm * const t)
if (t->tm_year < 70) if (t->tm_year < 70)
{ {
rt_set_errno(EINVAL); rt_set_errno(EINVAL);
return (time_t) -RT_ERROR; return (time_t) -1;
} }
/* Days since 1970 is 365 * number of years + number of leap years since 1970 */ /* Days since 1970 is 365 * number of years + number of leap years since 1970 */
@ -500,7 +500,7 @@ int gettimeofday(struct timeval *tv, struct timezone *tz)
else else
{ {
rt_set_errno(EINVAL); rt_set_errno(EINVAL);
return -RT_ERROR; return -1;
} }
} }
RTM_EXPORT(gettimeofday); RTM_EXPORT(gettimeofday);
@ -521,7 +521,7 @@ int settimeofday(const struct timeval *tv, const struct timezone *tz)
else else
{ {
rt_set_errno(EINVAL); rt_set_errno(EINVAL);
return -RT_ERROR; return -1;
} }
} }
RTM_EXPORT(settimeofday); RTM_EXPORT(settimeofday);
@ -532,7 +532,7 @@ int nanosleep(const struct timespec *rqtp, struct timespec *rmtp)
if (rqtp->tv_sec < 0 || rqtp->tv_nsec < 0 || rqtp->tv_nsec >= NANOSECOND_PER_SECOND) if (rqtp->tv_sec < 0 || rqtp->tv_nsec < 0 || rqtp->tv_nsec >= NANOSECOND_PER_SECOND)
{ {
rt_set_errno(EINVAL); rt_set_errno(EINVAL);
return -RT_ERROR; return -1;
} }
#ifdef RT_USING_CPUTIME #ifdef RT_USING_CPUTIME
uint64_t cpu_tick, cpu_tick_old; uint64_t cpu_tick, cpu_tick_old;
@ -553,7 +553,7 @@ int nanosleep(const struct timespec *rqtp, struct timespec *rmtp)
rmtp->tv_nsec = ((int)(rmtp_cpu_tick * unit)) % NANOSECOND_PER_SECOND; rmtp->tv_nsec = ((int)(rmtp_cpu_tick * unit)) % NANOSECOND_PER_SECOND;
} }
rt_set_errno(EINTR); rt_set_errno(EINTR);
return -RT_ERROR; return -1;
} }
else else
while (clock_cpu_gettime() - cpu_tick_old < cpu_tick); while (clock_cpu_gettime() - cpu_tick_old < cpu_tick);
@ -572,7 +572,7 @@ int nanosleep(const struct timespec *rqtp, struct timespec *rmtp)
rmtp->tv_nsec = (tick % RT_TICK_PER_SECOND) * (NANOSECOND_PER_SECOND / RT_TICK_PER_SECOND); rmtp->tv_nsec = (tick % RT_TICK_PER_SECOND) * (NANOSECOND_PER_SECOND / RT_TICK_PER_SECOND);
} }
rt_set_errno(EINTR); rt_set_errno(EINTR);
return -RT_ERROR; return -1;
} }
#endif #endif
return 0; return 0;
@ -610,7 +610,7 @@ static int _rt_clock_time_system_init(void)
_timevalue.tv_sec = 0; _timevalue.tv_sec = 0;
rt_hw_interrupt_enable(level); rt_hw_interrupt_enable(level);
return -RT_ERROR; return -1;
} }
INIT_COMPONENT_EXPORT(_rt_clock_time_system_init); INIT_COMPONENT_EXPORT(_rt_clock_time_system_init);
#endif /* RT_USING_RTC */ #endif /* RT_USING_RTC */
@ -619,14 +619,14 @@ int clock_getres(clockid_t clockid, struct timespec *res)
{ {
#ifndef RT_USING_RTC #ifndef RT_USING_RTC
LOG_W(_WARNING_NO_RTC); LOG_W(_WARNING_NO_RTC);
return -RT_ERROR; return -1;
#else #else
int ret = 0; int ret = 0;
if (res == RT_NULL) if (res == RT_NULL)
{ {
rt_set_errno(EFAULT); rt_set_errno(EFAULT);
return -RT_ERROR; return -1;
} }
switch (clockid) switch (clockid)
@ -646,7 +646,7 @@ int clock_getres(clockid_t clockid, struct timespec *res)
default: default:
res->tv_sec = 0; res->tv_sec = 0;
res->tv_nsec = 0; res->tv_nsec = 0;
ret = -RT_ERROR; ret = -1;
rt_set_errno(EINVAL); rt_set_errno(EINVAL);
break; break;
} }
@ -660,14 +660,14 @@ int clock_gettime(clockid_t clockid, struct timespec *tp)
{ {
#ifndef RT_USING_RTC #ifndef RT_USING_RTC
LOG_W(_WARNING_NO_RTC); LOG_W(_WARNING_NO_RTC);
return -RT_ERROR; return -1;
#else #else
int ret = 0; int ret = 0;
if (tp == RT_NULL) if (tp == RT_NULL)
{ {
rt_set_errno(EFAULT); rt_set_errno(EFAULT);
return -RT_ERROR; return -1;
} }
switch (clockid) switch (clockid)
@ -703,7 +703,7 @@ int clock_gettime(clockid_t clockid, struct timespec *tp)
tp->tv_sec = 0; tp->tv_sec = 0;
tp->tv_nsec = 0; tp->tv_nsec = 0;
rt_set_errno(EINVAL); rt_set_errno(EINVAL);
ret = -RT_ERROR; ret = -1;
} }
return ret; return ret;
@ -715,12 +715,12 @@ int clock_nanosleep(clockid_t clockid, int flags, const struct timespec *rqtp, s
{ {
#ifndef RT_USING_RTC #ifndef RT_USING_RTC
LOG_W(_WARNING_NO_RTC); LOG_W(_WARNING_NO_RTC);
return -RT_ERROR; return -1;
#else #else
if (rqtp->tv_sec < 0 || rqtp->tv_nsec < 0 || rqtp->tv_nsec >= NANOSECOND_PER_SECOND) if (rqtp->tv_sec < 0 || rqtp->tv_nsec < 0 || rqtp->tv_nsec >= NANOSECOND_PER_SECOND)
{ {
rt_set_errno(EINVAL); rt_set_errno(EINVAL);
return -RT_ERROR; return -1;
} }
switch (clockid) switch (clockid)
{ {
@ -748,7 +748,7 @@ int clock_nanosleep(clockid_t clockid, int flags, const struct timespec *rqtp, s
rmtp->tv_nsec = (tick % RT_TICK_PER_SECOND) * (NANOSECOND_PER_SECOND / RT_TICK_PER_SECOND); rmtp->tv_nsec = (tick % RT_TICK_PER_SECOND) * (NANOSECOND_PER_SECOND / RT_TICK_PER_SECOND);
} }
rt_set_errno(EINTR); rt_set_errno(EINTR);
return -RT_ERROR; return -1;
} }
} }
break; break;
@ -777,7 +777,7 @@ int clock_nanosleep(clockid_t clockid, int flags, const struct timespec *rqtp, s
rmtp->tv_nsec = ((int)(rmtp_cpu_tick * unit)) % NANOSECOND_PER_SECOND; rmtp->tv_nsec = ((int)(rmtp_cpu_tick * unit)) % NANOSECOND_PER_SECOND;
} }
rt_set_errno(EINTR); rt_set_errno(EINTR);
return -RT_ERROR; return -1;
} }
else else
while (clock_cpu_gettime() - cpu_tick_old < cpu_tick); while (clock_cpu_gettime() - cpu_tick_old < cpu_tick);
@ -786,7 +786,7 @@ int clock_nanosleep(clockid_t clockid, int flags, const struct timespec *rqtp, s
#endif #endif
default: default:
rt_set_errno(EINVAL); rt_set_errno(EINVAL);
return -RT_ERROR; return -1;
} }
return 0; return 0;
#endif #endif
@ -797,7 +797,7 @@ int clock_settime(clockid_t clockid, const struct timespec *tp)
{ {
#ifndef RT_USING_RTC #ifndef RT_USING_RTC
LOG_W(_WARNING_NO_RTC); LOG_W(_WARNING_NO_RTC);
return -RT_ERROR; return -1;
#else #else
rt_base_t level; rt_base_t level;
int second; int second;
@ -807,7 +807,7 @@ int clock_settime(clockid_t clockid, const struct timespec *tp)
if ((clockid != CLOCK_REALTIME) || (tp == RT_NULL)) if ((clockid != CLOCK_REALTIME) || (tp == RT_NULL))
{ {
rt_set_errno(EFAULT); rt_set_errno(EFAULT);
return -RT_ERROR; return -1;
} }
/* get second */ /* get second */
@ -831,7 +831,7 @@ int clock_settime(clockid_t clockid, const struct timespec *tp)
} }
} }
return -RT_ERROR; return -1;
#endif /* RT_USING_RTC */ #endif /* RT_USING_RTC */
} }
RTM_EXPORT(clock_settime); RTM_EXPORT(clock_settime);
@ -935,14 +935,14 @@ int timer_create(clockid_t clockid, struct sigevent *evp, timer_t *timerid)
evp->sigev_notify != SIGEV_SIGNAL)) evp->sigev_notify != SIGEV_SIGNAL))
{ {
rt_set_errno(EINVAL); rt_set_errno(EINVAL);
return -RT_ERROR; return -1;
} }
timer = rt_malloc(sizeof(struct timer_obj)); timer = rt_malloc(sizeof(struct timer_obj));
if(timer == RT_NULL) if(timer == RT_NULL)
{ {
rt_set_errno(ENOMEM); rt_set_errno(ENOMEM);
return -RT_ENOMEM; return -1;
} }
rt_snprintf(timername, RT_NAME_MAX, "psx_tm%02d", num++); rt_snprintf(timername, RT_NAME_MAX, "psx_tm%02d", num++);
@ -969,7 +969,7 @@ int timer_create(clockid_t clockid, struct sigevent *evp, timer_t *timerid)
*timerid = (timer_t)((uintptr_t)timer >> 1); *timerid = (timer_t)((uintptr_t)timer >> 1);
return RT_EOK; return 0;
} }
RTM_EXPORT(timer_create); RTM_EXPORT(timer_create);
@ -985,7 +985,7 @@ int timer_delete(timer_t timerid)
if (timer == RT_NULL || rt_object_get_type(&timer->timer.parent) != RT_Object_Class_Timer) if (timer == RT_NULL || rt_object_get_type(&timer->timer.parent) != RT_Object_Class_Timer)
{ {
rt_set_errno(EINVAL); rt_set_errno(EINVAL);
return -RT_ERROR; return -1;
} }
if (timer->status == ACTIVE) if (timer->status == ACTIVE)
@ -996,7 +996,7 @@ int timer_delete(timer_t timerid)
rt_timer_detach(&timer->timer); rt_timer_detach(&timer->timer);
rt_free(timer); rt_free(timer);
return RT_EOK; return 0;
} }
RTM_EXPORT(timer_delete); RTM_EXPORT(timer_delete);
@ -1008,7 +1008,7 @@ RTM_EXPORT(timer_delete);
int timer_getoverrun(timer_t timerid) int timer_getoverrun(timer_t timerid)
{ {
rt_set_errno(ENOSYS); rt_set_errno(ENOSYS);
return -RT_ERROR; return -1;
} }
/** /**
@ -1025,13 +1025,13 @@ int timer_gettime(timer_t timerid, struct itimerspec *its)
if (timer == NULL || rt_object_get_type(&timer->timer.parent) != RT_Object_Class_Timer) if (timer == NULL || rt_object_get_type(&timer->timer.parent) != RT_Object_Class_Timer)
{ {
rt_set_errno(EINVAL); rt_set_errno(EINVAL);
return -RT_ERROR; return -1;
} }
if (its == NULL) if (its == NULL)
{ {
rt_set_errno(EFAULT); rt_set_errno(EFAULT);
return -RT_ERROR; return -1;
} }
if (timer->status == ACTIVE) if (timer->status == ACTIVE)
@ -1073,7 +1073,7 @@ int timer_gettime(timer_t timerid, struct itimerspec *its)
/* The interval last set by timer_settime() */ /* The interval last set by timer_settime() */
its->it_interval = timer->interval; its->it_interval = timer->interval;
return RT_EOK; return 0;
} }
RTM_EXPORT(timer_gettime); RTM_EXPORT(timer_gettime);
@ -1096,7 +1096,7 @@ int timer_settime(timer_t timerid, int flags, const struct itimerspec *value,
value->it_value.tv_sec < 0) value->it_value.tv_sec < 0)
{ {
rt_set_errno(EINVAL); rt_set_errno(EINVAL);
return -RT_ERROR; return -1;
} }
/* Save time to expire and old reload value. */ /* Save time to expire and old reload value. */
@ -1114,7 +1114,7 @@ int timer_settime(timer_t timerid, int flags, const struct itimerspec *value,
} }
timer->status = NOT_ACTIVE; timer->status = NOT_ACTIVE;
return RT_EOK; return 0;
} }
/* calculate timer period(tick); To avoid lost of accuracy, because "RT_TICK_PER_SECOND" maybe 100, 1000, 1024 and so on. /* calculate timer period(tick); To avoid lost of accuracy, because "RT_TICK_PER_SECOND" maybe 100, 1000, 1024 and so on.
@ -1128,7 +1128,7 @@ int timer_settime(timer_t timerid, int flags, const struct itimerspec *value,
{ {
#ifndef RT_USING_RTC #ifndef RT_USING_RTC
LOG_W(_WARNING_NO_RTC); LOG_W(_WARNING_NO_RTC);
return -RT_ERROR; return -1;
#else #else
rt_int64_t ts = ((value->it_value.tv_sec - _timevalue.tv_sec) * RT_TICK_PER_SECOND); rt_int64_t ts = ((value->it_value.tv_sec - _timevalue.tv_sec) * RT_TICK_PER_SECOND);
rt_int64_t tns = (value->it_value.tv_nsec - _timevalue.tv_usec) * (RT_TICK_PER_SECOND / NANOSECOND_PER_SECOND); rt_int64_t tns = (value->it_value.tv_nsec - _timevalue.tv_usec) * (RT_TICK_PER_SECOND / NANOSECOND_PER_SECOND);
@ -1159,7 +1159,7 @@ int timer_settime(timer_t timerid, int flags, const struct itimerspec *value,
rt_timer_control(&timer->timer, RT_TIMER_CTRL_SET_TIME, &(timer->reload)); rt_timer_control(&timer->timer, RT_TIMER_CTRL_SET_TIME, &(timer->reload));
rt_timer_start(&timer->timer); rt_timer_start(&timer->timer);
return RT_EOK; return 0;
} }
RTM_EXPORT(timer_settime); RTM_EXPORT(timer_settime);
#endif /* RT_USING_POSIX_TIMER */ #endif /* RT_USING_POSIX_TIMER */