summaryrefslogtreecommitdiff
path: root/components/libc/compilers/common
diff options
context:
space:
mode:
authorzms123456 <[email protected]>2024-06-23 22:08:54 +0800
committerGitHub <[email protected]>2024-06-23 22:08:54 +0800
commit22b5e5fd7b80403d2c58c8361d3678eb7f21df68 (patch)
tree48f41d2a8929539526233ca784380f440ce670ec /components/libc/compilers/common
parent5c1e5d2fcadda2ff797db3f7e23b5a38ad466cbc (diff)
[components][ktime]support period ktime timeout and multiple ktimer_hrtimer (#8972)
* support period time * enable multiple ktimer * mv set delay_cnt to hrtimer_start * add ktime debug info * change current_irq_begin to local var * fix bug: setting current timer and setting timeout in driver aren't atomicly * create->init * refactoring ktime
Diffstat (limited to 'components/libc/compilers/common')
-rw-r--r--components/libc/compilers/common/ctime.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/components/libc/compilers/common/ctime.c b/components/libc/compilers/common/ctime.c
index 79d7010034..ef006c4a1e 100644
--- a/components/libc/compilers/common/ctime.c
+++ b/components/libc/compilers/common/ctime.c
@@ -881,8 +881,7 @@ static void rtthread_timer_wrapper(void *timerobj)
rt_ktime_cputimer_getres();
if (timer->reload)
{
- rt_ktime_hrtimer_control(&timer->hrtimer, RT_TIMER_CTRL_SET_TIME, &(timer->reload));
- rt_ktime_hrtimer_start(&timer->hrtimer);
+ rt_ktime_hrtimer_start(&timer->hrtimer, timer->reload);
}
#ifdef RT_USING_SMART
/* this field is named as tid in musl */
@@ -1003,7 +1002,7 @@ int timer_create(clockid_t clockid, struct sigevent *evp, timer_t *timerid)
timer->status = NOT_ACTIVE;
timer->clockid = clockid;
- rt_ktime_hrtimer_init(&timer->hrtimer, timername, 0, RT_TIMER_FLAG_ONE_SHOT | RT_TIMER_FLAG_HARD_TIMER,
+ rt_ktime_hrtimer_init(&timer->hrtimer, timername, RT_TIMER_FLAG_ONE_SHOT | RT_TIMER_FLAG_HARD_TIMER,
rtthread_timer_wrapper, timer);
_timerid = resource_id_get(&id_timer);
@@ -1226,8 +1225,7 @@ int timer_settime(timer_t timerid, int flags, const struct itimerspec *value,
else
rt_ktime_hrtimer_control(&timer->hrtimer, RT_TIMER_CTRL_SET_PERIODIC, RT_NULL);
- rt_ktime_hrtimer_control(&timer->hrtimer, RT_TIMER_CTRL_SET_TIME, &(timer->reload));
- rt_ktime_hrtimer_start(&timer->hrtimer);
+ rt_ktime_hrtimer_start(&timer->hrtimer, timer->reload);
return 0;
}