| 194 | } |
| 195 | |
| 196 | rt_err_t rt_ktime_hrtimer_start(rt_ktime_hrtimer_t timer, unsigned long delay_cnt) |
| 197 | { |
| 198 | rt_base_t level; |
| 199 | |
| 200 | /* parameter check */ |
| 201 | RT_ASSERT(timer != RT_NULL); |
| 202 | RT_ASSERT(delay_cnt < (_HRTIMER_MAX_CNT / 2)); |
| 203 | |
| 204 | timer->delay_cnt = delay_cnt; |
| 205 | timer->timeout_cnt = timer->delay_cnt + rt_ktime_cputimer_getcnt(); |
| 206 | |
| 207 | level = rt_spin_lock_irqsave(&_spinlock); |
| 208 | |
| 209 | if (timer->flag & RT_TIMER_FLAG_ACTIVATED) |
| 210 | { |
| 211 | rt_spin_unlock_irqrestore(&_spinlock, level); |
| 212 | return -RT_ERROR; |
| 213 | } |
| 214 | |
| 215 | _insert_timer_to_list_locked(timer); |
| 216 | _set_next_timeout_locked(); |
| 217 | |
| 218 | rt_spin_unlock_irqrestore(&_spinlock, level); |
| 219 | |
| 220 | return RT_EOK; |
| 221 | } |
| 222 | |
| 223 | rt_err_t rt_ktime_hrtimer_stop(rt_ktime_hrtimer_t timer) |
| 224 | { |
no test coverage detected