Lines Matching refs:timer
138 static int common_timer_del(struct k_itimer *timer);
159 struct k_itimer *timer; in __posix_timers_find() local
161 hlist_for_each_entry_rcu(timer, head, t_hash) { in __posix_timers_find()
162 if ((timer->it_signal == sig) && (timer->it_id == id)) in __posix_timers_find()
163 return timer; in __posix_timers_find()
176 static int posix_timer_add(struct k_itimer *timer) in posix_timer_add() argument
187 hlist_add_head_rcu(&timer->t_hash, head); in posix_timer_add()
353 struct hrtimer *timer = &timr->it.real.timer; in schedule_next_timer() local
358 timr->it_overrun += (unsigned int) hrtimer_forward(timer, in schedule_next_timer()
359 timer->base->get_time(), in schedule_next_timer()
365 hrtimer_restart(timer); in schedule_next_timer()
435 static enum hrtimer_restart posix_timer_fn(struct hrtimer *timer) in posix_timer_fn() argument
442 timr = container_of(timer, struct k_itimer, it.real.timer); in posix_timer_fn()
455 ktime_t now = hrtimer_cb_get_time(timer); in posix_timer_fn()
488 hrtimer_forward(timer, now, in posix_timer_fn()
589 hrtimer_init(&new_timer->it.real.timer, new_timer->it_clock, 0); in common_timer_create()
732 struct hrtimer *timer = &timr->it.real.timer; in common_timer_get() local
741 else if (!hrtimer_active(timer) && in common_timer_get()
745 now = timer->base->get_time(); in common_timer_get()
754 timr->it_overrun += (unsigned int) hrtimer_forward(timer, now, iv); in common_timer_get()
756 remaining = ktime_sub(hrtimer_get_expires(timer), now); in common_timer_get()
828 struct hrtimer *timer = &timr->it.real.timer; in common_timer_set() local
840 if (hrtimer_try_to_cancel(timer) < 0) in common_timer_set()
852 hrtimer_init(&timr->it.real.timer, timr->it_clock, mode); in common_timer_set()
853 timr->it.real.timer.function = posix_timer_fn; in common_timer_set()
855 hrtimer_set_expires(timer, timespec_to_ktime(new_setting->it_value)); in common_timer_set()
864 hrtimer_add_expires(timer, timer->base->get_time()); in common_timer_set()
869 hrtimer_start_expires(timer, mode); in common_timer_set()
918 static int common_timer_del(struct k_itimer *timer) in common_timer_del() argument
920 timer->it.real.interval.tv64 = 0; in common_timer_del()
922 if (hrtimer_try_to_cancel(&timer->it.real.timer) < 0) in common_timer_del()
927 static inline int timer_delete_hook(struct k_itimer *timer) in timer_delete_hook() argument
929 struct k_clock *kc = clockid_to_kclock(timer->it_clock); in timer_delete_hook()
933 return kc->timer_del(timer); in timer_delete_hook()
939 struct k_itimer *timer; in SYSCALL_DEFINE1() local
943 timer = lock_timer(timer_id, &flags); in SYSCALL_DEFINE1()
944 if (!timer) in SYSCALL_DEFINE1()
947 if (timer_delete_hook(timer) == TIMER_RETRY) { in SYSCALL_DEFINE1()
948 unlock_timer(timer, flags); in SYSCALL_DEFINE1()
953 list_del(&timer->list); in SYSCALL_DEFINE1()
959 timer->it_signal = NULL; in SYSCALL_DEFINE1()
961 unlock_timer(timer, flags); in SYSCALL_DEFINE1()
962 release_posix_timer(timer, IT_ID_SET); in SYSCALL_DEFINE1()
969 static void itimer_delete(struct k_itimer *timer) in itimer_delete() argument
974 spin_lock_irqsave(&timer->it_lock, flags); in itimer_delete()
976 if (timer_delete_hook(timer) == TIMER_RETRY) { in itimer_delete()
977 unlock_timer(timer, flags); in itimer_delete()
980 list_del(&timer->list); in itimer_delete()
985 timer->it_signal = NULL; in itimer_delete()
987 unlock_timer(timer, flags); in itimer_delete()
988 release_posix_timer(timer, IT_ID_SET); in itimer_delete()