From f4e9ec82bbfc1a7183fca6f7c7039ca2e3f1b992 Mon Sep 17 00:00:00 2001 From: zhkag Date: Tue, 7 Feb 2023 15:17:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=BA=B3=E7=A7=92=E5=BE=AE?= =?UTF-8?q?=E5=A6=99=E6=B7=B7=E7=94=A8=E8=BD=AC=E6=8D=A2=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/libc/compilers/common/ctime.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/components/libc/compilers/common/ctime.c b/components/libc/compilers/common/ctime.c index 0fa3449a35..7806f91de3 100644 --- a/components/libc/compilers/common/ctime.c +++ b/components/libc/compilers/common/ctime.c @@ -730,7 +730,9 @@ int clock_nanosleep(clockid_t clockid, int flags, const struct timespec *rqtp, s rt_tick_t tick, tick_old = rt_tick_get(); if ((flags & TIMER_ABSTIME) == TIMER_ABSTIME) { - tick = (rqtp->tv_sec - _timevalue.tv_sec) * RT_TICK_PER_SECOND + (rqtp->tv_nsec - _timevalue.tv_usec) * (RT_TICK_PER_SECOND / NANOSECOND_PER_SECOND); + rt_int64_t ts = ((rqtp->tv_sec - _timevalue.tv_sec) * RT_TICK_PER_SECOND); + rt_int64_t tns = (rqtp->tv_nsec - _timevalue.tv_usec * 1000) * (RT_TICK_PER_SECOND / NANOSECOND_PER_SECOND); + tick = ts + tns; rt_tick_t rt_tick = rt_tick_get(); tick = tick < rt_tick ? 0 : tick - rt_tick; } @@ -1216,7 +1218,7 @@ int timer_settime(timer_t timerid, int flags, const struct itimerspec *value, return -1; #else 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 * 1000) * (RT_TICK_PER_SECOND / NANOSECOND_PER_SECOND); rt_int64_t reload = ts + tns; rt_tick_t rt_tick = rt_tick_get(); timer->reload = reload < rt_tick ? 0 : reload - rt_tick; -- GitLab