diff options
| author | zms123456 <[email protected]> | 2024-06-23 22:08:54 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2024-06-23 22:08:54 +0800 |
| commit | 22b5e5fd7b80403d2c58c8361d3678eb7f21df68 (patch) | |
| tree | 48f41d2a8929539526233ca784380f440ce670ec /components/libc/compilers/common | |
| parent | 5c1e5d2fcadda2ff797db3f7e23b5a38ad466cbc (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.c | 8 |
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; } |
