Lines Matching refs:timer

53     static rt_timer_t timer = RT_NULL;  in rt_ktime_hrtimer_settimeout()  local
58 if (timer == RT_NULL) in rt_ktime_hrtimer_settimeout()
60 timer = &_sh_rtimer; in rt_ktime_hrtimer_settimeout()
61 …rt_timer_init(timer, "shrtimer", (void (*)(void *))rt_ktime_hrtimer_process, RT_NULL, cnt, RT_TIME… in rt_ktime_hrtimer_settimeout()
66 rt_timer_control(timer, RT_TIMER_CTRL_SET_TIME, &tick); in rt_ktime_hrtimer_settimeout()
67 rt_timer_control(timer, RT_TIMER_CTRL_SET_PARM, RT_NULL); in rt_ktime_hrtimer_settimeout()
70 if (timer->parent.flag & RT_TIMER_FLAG_ACTIVATED) in rt_ktime_hrtimer_settimeout()
72 rt_timer_stop(timer); in rt_ktime_hrtimer_settimeout()
75 rt_timer_start(timer); in rt_ktime_hrtimer_settimeout()
98 struct rt_ktime_hrtimer *timer = parameter; in _sleep_timeout() local
99 rt_completion_done(&timer->completion); in _sleep_timeout()
102 static void _insert_timer_to_list_locked(rt_ktime_hrtimer_t timer) in _insert_timer_to_list_locked() argument
108 if (iter->timeout_cnt > timer->timeout_cnt) in _insert_timer_to_list_locked()
113 rt_list_insert_before(&iter->node, &(timer->node)); in _insert_timer_to_list_locked()
115 timer->flag |= RT_TIMER_FLAG_ACTIVATED; in _insert_timer_to_list_locked()
120 rt_ktime_hrtimer_t timer; in _hrtimer_process_locked() local
122 for (timer = _first_hrtimer(); in _hrtimer_process_locked()
123 (timer != RT_NULL) && (timer->timeout_cnt <= rt_ktime_cputimer_getcnt()); in _hrtimer_process_locked()
124 timer = _first_hrtimer()) in _hrtimer_process_locked()
126 rt_list_remove(&(timer->node)); in _hrtimer_process_locked()
128 if (timer->flag & RT_TIMER_FLAG_PERIODIC) in _hrtimer_process_locked()
130 timer->timeout_cnt = timer->delay_cnt + rt_ktime_cputimer_getcnt(); in _hrtimer_process_locked()
131 _insert_timer_to_list_locked(timer); in _hrtimer_process_locked()
135 timer->flag &= ~RT_TIMER_FLAG_ACTIVATED; in _hrtimer_process_locked()
138 if (timer->timeout_func) in _hrtimer_process_locked()
140 timer->timeout_func(timer->parameter); in _hrtimer_process_locked()
147 rt_ktime_hrtimer_t timer; in _set_next_timeout_locked() local
154 if ((timer = _first_hrtimer()) != RT_NULL) in _set_next_timeout_locked()
156 next_timeout_hrtimer_cnt = _cnt_convert(timer->timeout_cnt); in _set_next_timeout_locked()
181 void rt_ktime_hrtimer_init(rt_ktime_hrtimer_t timer, in rt_ktime_hrtimer_init() argument
188 RT_ASSERT(timer != RT_NULL); in rt_ktime_hrtimer_init()
191 rt_memset(timer, 0, sizeof(struct rt_ktime_hrtimer)); in rt_ktime_hrtimer_init()
193 timer->flag = flag & ~RT_TIMER_FLAG_ACTIVATED; in rt_ktime_hrtimer_init()
194 timer->timeout_func = timeout; in rt_ktime_hrtimer_init()
195 timer->parameter = parameter; in rt_ktime_hrtimer_init()
196 rt_strncpy(timer->name, name, RT_NAME_MAX - 1); in rt_ktime_hrtimer_init()
197 rt_list_init(&(timer->node)); in rt_ktime_hrtimer_init()
198 rt_completion_init(&timer->completion); in rt_ktime_hrtimer_init()
201 rt_err_t rt_ktime_hrtimer_start(rt_ktime_hrtimer_t timer, unsigned long delay_cnt) in rt_ktime_hrtimer_start() argument
206 RT_ASSERT(timer != RT_NULL); in rt_ktime_hrtimer_start()
209 timer->delay_cnt = delay_cnt; in rt_ktime_hrtimer_start()
210 timer->timeout_cnt = timer->delay_cnt + rt_ktime_cputimer_getcnt(); in rt_ktime_hrtimer_start()
214 if (timer->flag & RT_TIMER_FLAG_ACTIVATED) in rt_ktime_hrtimer_start()
220 _insert_timer_to_list_locked(timer); in rt_ktime_hrtimer_start()
228 rt_err_t rt_ktime_hrtimer_stop(rt_ktime_hrtimer_t timer) in rt_ktime_hrtimer_stop() argument
232 RT_ASSERT(timer != RT_NULL); /* timer check */ in rt_ktime_hrtimer_stop()
236 if (!(timer->flag & RT_TIMER_FLAG_ACTIVATED)) in rt_ktime_hrtimer_stop()
242 rt_list_remove(&timer->node); in rt_ktime_hrtimer_stop()
243 timer->flag &= ~RT_TIMER_FLAG_ACTIVATED; in rt_ktime_hrtimer_stop()
251 rt_err_t rt_ktime_hrtimer_control(rt_ktime_hrtimer_t timer, int cmd, void *arg) in rt_ktime_hrtimer_control() argument
256 RT_ASSERT(timer != RT_NULL); in rt_ktime_hrtimer_control()
263 *(unsigned long *)arg = timer->delay_cnt; in rt_ktime_hrtimer_control()
268 timer->delay_cnt = *(unsigned long *)arg; in rt_ktime_hrtimer_control()
269 timer->timeout_cnt = *(unsigned long *)arg + rt_ktime_cputimer_getcnt(); in rt_ktime_hrtimer_control()
273 timer->flag &= ~RT_TIMER_FLAG_PERIODIC; in rt_ktime_hrtimer_control()
277 timer->flag |= RT_TIMER_FLAG_PERIODIC; in rt_ktime_hrtimer_control()
281 if (timer->flag & RT_TIMER_FLAG_ACTIVATED) in rt_ktime_hrtimer_control()
294 *(unsigned long *)arg = timer->timeout_cnt; in rt_ktime_hrtimer_control()
297 arg = (void *)timer->timeout_func; in rt_ktime_hrtimer_control()
301 timer->timeout_func = (void (*)(void *))arg; in rt_ktime_hrtimer_control()
305 *(void **)arg = timer->parameter; in rt_ktime_hrtimer_control()
309 timer->parameter = arg; in rt_ktime_hrtimer_control()
320 rt_err_t rt_ktime_hrtimer_detach(rt_ktime_hrtimer_t timer) in rt_ktime_hrtimer_detach() argument
325 RT_ASSERT(timer != RT_NULL); in rt_ktime_hrtimer_detach()
328 rt_completion_wakeup_by_errno(&timer->completion, RT_ERROR); in rt_ktime_hrtimer_detach()
333 timer->flag &= ~RT_TIMER_FLAG_ACTIVATED; in rt_ktime_hrtimer_detach()
335 if (timer->error == -RT_EINTR || timer->error == RT_EINTR) in rt_ktime_hrtimer_detach()
337 rt_list_remove(&timer->node); in rt_ktime_hrtimer_detach()
348 void rt_ktime_hrtimer_delay_init(struct rt_ktime_hrtimer *timer) in rt_ktime_hrtimer_delay_init() argument
350 rt_ktime_hrtimer_init(timer, "hrtimer_sleep", RT_TIMER_FLAG_ONE_SHOT | RT_TIMER_FLAG_HARD_TIMER, in rt_ktime_hrtimer_delay_init()
351 _sleep_timeout, timer); in rt_ktime_hrtimer_delay_init()
354 void rt_ktime_hrtimer_delay_detach(struct rt_ktime_hrtimer *timer) in rt_ktime_hrtimer_delay_detach() argument
356 rt_ktime_hrtimer_detach(timer); in rt_ktime_hrtimer_delay_detach()
359 rt_err_t rt_ktime_hrtimer_sleep(struct rt_ktime_hrtimer *timer, unsigned long cnt) in rt_ktime_hrtimer_sleep() argument
366 err = rt_ktime_hrtimer_start(timer, cnt); in rt_ktime_hrtimer_sleep()
370 err = rt_completion_wait_flags(&(timer->completion), RT_WAITING_FOREVER, in rt_ktime_hrtimer_sleep()
372 rt_ktime_hrtimer_keep_errno(timer, err); in rt_ktime_hrtimer_sleep()
377 rt_err_t rt_ktime_hrtimer_ndelay(struct rt_ktime_hrtimer *timer, unsigned long ns) in rt_ktime_hrtimer_ndelay() argument
380 return rt_ktime_hrtimer_sleep(timer, (ns * RT_KTIME_RESMUL) / res); in rt_ktime_hrtimer_ndelay()
383 rt_err_t rt_ktime_hrtimer_udelay(struct rt_ktime_hrtimer *timer, unsigned long us) in rt_ktime_hrtimer_udelay() argument
385 return rt_ktime_hrtimer_ndelay(timer, us * 1000); in rt_ktime_hrtimer_udelay()
388 rt_err_t rt_ktime_hrtimer_mdelay(struct rt_ktime_hrtimer *timer, unsigned long ms) in rt_ktime_hrtimer_mdelay() argument
390 return rt_ktime_hrtimer_ndelay(timer, ms * 1000000); in rt_ktime_hrtimer_mdelay()