summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--components/drivers/cputime/cputime.c2
-rw-r--r--components/drivers/include/drivers/cputime.h4
-rw-r--r--components/libc/compilers/common/ctime.c31
-rw-r--r--components/lwp/lwp_syscall.c2
4 files changed, 20 insertions, 19 deletions
diff --git a/components/drivers/cputime/cputime.c b/components/drivers/cputime/cputime.c
index b39e789cd2..97fbc328fe 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 2547ffa42e..665c89fb68 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 7806f91de3..9147af3dfb 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 5a2d0d4263..37459366f5 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();
}