diff --git a/components/drivers/cputime/cputime.c b/components/drivers/cputime/cputime.c index b39e789cd2a42287f2c7624da86f28812277cacf..97fbc328fe8671665f6bdb657e9fba6239069da1 100644 --- a/components/drivers/cputime/cputime.c +++ b/components/drivers/cputime/cputime.c @@ -52,7 +52,7 @@ uint64_t clock_cpu_gettime(void) * @param parameter the Parameters of timeout function * */ -void clock_cpu_settimeout(uint64_t tick, void (*timeout)(void *param), void *param) +int clock_cpu_settimeout(uint64_t tick, void (*timeout)(void *param), void *param) { if (_cputime_ops) return _cputime_ops->cputime_settimeout(tick, timeout, param); diff --git a/components/drivers/include/drivers/cputime.h b/components/drivers/include/drivers/cputime.h index 2547ffa42ef1917da5577bb08e800a0b3bbf7bf8..665c89fb684f57630456d2eb5c0e7a35ba355fba 100644 --- a/components/drivers/include/drivers/cputime.h +++ b/components/drivers/include/drivers/cputime.h @@ -17,12 +17,12 @@ struct rt_clock_cputime_ops { double (*cputime_getres)(void); uint64_t (*cputime_gettime)(void); - void (*cputime_settimeout)(uint64_t tick, void (*timeout)(void *param), void *param); + int (*cputime_settimeout)(uint64_t tick, void (*timeout)(void *param), void *param); }; double clock_cpu_getres(void); uint64_t clock_cpu_gettime(void); -void clock_cpu_settimeout(uint64_t tick, void (*timeout)(void *param), void *param); +int clock_cpu_settimeout(uint64_t tick, void (*timeout)(void *param), void *param); uint64_t clock_cpu_microsecond(uint64_t cpu_tick); uint64_t clock_cpu_millisecond(uint64_t cpu_tick); diff --git a/components/libc/compilers/common/ctime.c b/components/libc/compilers/common/ctime.c index 7806f91de3d22ee1b67c68a8b82e96772deb6b57..9147af3dfbf57f7536027f4e03767a3cbb759461 100644 --- a/components/libc/compilers/common/ctime.c +++ b/components/libc/compilers/common/ctime.c @@ -950,6 +950,16 @@ int timer_id_alloc(void) return -1; } +void timer_id_lock() +{ + rt_hw_spin_lock(&_timer_id_lock); +} + +void timer_id_unlock() +{ + rt_hw_spin_unlock(&_timer_id_lock); +} + struct timer_obj *timer_id_get(int timerid) { struct timer_obj *timer; @@ -972,15 +982,6 @@ int timer_id_put(int id) _g_timerid[id] = NULL; return 0; } -void timer_id_lock() -{ - rt_hw_spin_lock(&_timer_id_lock); -} - -void timer_id_unlock() -{ - rt_hw_spin_unlock(&_timer_id_lock); -} /** * @brief Create a per-process timer. * @@ -1042,7 +1043,7 @@ int timer_create(clockid_t clockid, struct sigevent *evp, timer_t *timerid) return -1; /* todo:memory leak */ } _g_timerid[_timerid] = timer; - *timerid = _timerid; + *timerid = (timer_t *)(rt_ubase_t)_timerid; timer_id_unlock(); return 0; @@ -1058,15 +1059,15 @@ int timer_delete(timer_t timerid) { struct timer_obj *timer; timer_id_lock(); - if (_g_timerid[(int)timerid] == NULL) + if (_g_timerid[(rt_ubase_t)timerid] == NULL) { timer_id_unlock(); rt_set_errno(EINVAL); LOG_E("can not find timer!"); return -1; } - timer = _g_timerid[(int)timerid]; - timer_id_put(timerid); + timer = _g_timerid[(rt_ubase_t)timerid]; + timer_id_put((rt_ubase_t)timerid); timer_id_unlock(); if (timer == RT_NULL || rt_object_get_type(&timer->timer.parent) != RT_Object_Class_Timer) @@ -1105,7 +1106,7 @@ int timer_getoverrun(timer_t timerid) */ int timer_gettime(timer_t timerid, struct itimerspec *its) { - struct timer_obj *timer = timer_id_get(timerid); + struct timer_obj *timer = timer_id_get((rt_ubase_t)timerid); rt_tick_t remaining; rt_uint32_t seconds, nanoseconds; @@ -1172,7 +1173,7 @@ RTM_EXPORT(timer_gettime); int timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue) { - struct timer_obj *timer = timer_id_get(timerid); + struct timer_obj *timer = timer_id_get((rt_ubase_t)timerid); if (timer == NULL || rt_object_get_type(&timer->timer.parent) != RT_Object_Class_Timer || value->it_interval.tv_nsec < 0 || diff --git a/components/lwp/lwp_syscall.c b/components/lwp/lwp_syscall.c index 5a2d0d42637e6942ca67bf410e6c7d041e6bc8b2..37459366f51396c5de516c481fa79bda64d9e878 100644 --- a/components/lwp/lwp_syscall.c +++ b/components/lwp/lwp_syscall.c @@ -4338,7 +4338,7 @@ int sys_mq_unlink(const char *name) lwp_get_from_user(kname, (void *)name, len + 1); ret = mq_unlink(kname); - if (err < 0) + if (ret < 0) { ret = GET_ERRNO(); }