Lines Matching defs:timer

20 static int rtc_timer_enqueue(struct rtc_device *rtc, struct rtc_timer *timer);
21 static void rtc_timer_remove(struct rtc_device *rtc, struct rtc_timer *timer);
164 /* A timer might have just expired */
654 * @timer: pointer to the pie mode hrtimer
660 enum hrtimer_restart rtc_pie_update_irq(struct hrtimer *timer)
666 rtc = container_of(timer, struct rtc_device, pie_timer);
669 count = hrtimer_forward_now(timer, period);
724 * We always cancel the timer here first, because otherwise
725 * we could run into BUG_ON(timer->state != HRTIMER_STATE_CALLBACK);
726 * when we manage to start the timer before the callback
793 * @timer: timer being added.
795 * Enqueues a timer onto the rtc devices timerqueue and sets
798 * Sets the enabled bit on the added timer.
802 static int rtc_timer_enqueue(struct rtc_device *rtc, struct rtc_timer *timer)
813 timer->enabled = 1;
823 timerqueue_add(&rtc->timerqueue, &timer->node);
824 trace_rtc_timer_enqueue(timer);
825 if (!next || ktime_before(timer->node.expires, next->expires)) {
828 alarm.time = rtc_ktime_to_tm(timer->node.expires);
835 timerqueue_del(&rtc->timerqueue, &timer->node);
836 trace_rtc_timer_dequeue(timer);
837 timer->enabled = 0;
856 * @timer: timer being removed.
858 * Removes a timer onto the rtc devices timerqueue and sets
861 * Clears the enabled bit on the removed timer.
865 static void rtc_timer_remove(struct rtc_device *rtc, struct rtc_timer *timer)
869 timerqueue_del(&rtc->timerqueue, &timer->node);
870 trace_rtc_timer_dequeue(timer);
871 timer->enabled = 0;
872 if (next == &timer->node) {
902 struct rtc_timer *timer;
918 /* expire timer */
919 timer = container_of(next, struct rtc_timer, node);
920 timerqueue_del(&rtc->timerqueue, &timer->node);
921 trace_rtc_timer_dequeue(timer);
922 timer->enabled = 0;
923 if (timer->func)
924 timer->func(timer->rtc);
926 trace_rtc_timer_fired(timer);
928 if (ktime_to_ns(timer->period)) {
929 timer->node.expires = ktime_add(timer->node.expires,
930 timer->period);
931 timer->enabled = 1;
932 timerqueue_add(&rtc->timerqueue, &timer->node);
933 trace_rtc_timer_enqueue(timer);
953 timer = container_of(next, struct rtc_timer, node);
954 timerqueue_del(&rtc->timerqueue, &timer->node);
955 trace_rtc_timer_dequeue(timer);
956 timer->enabled = 0;
969 * @timer: timer to be intiialized
970 * @f: function pointer to be called when timer fires
975 void rtc_timer_init(struct rtc_timer *timer, void (*f)(struct rtc_device *r),
978 timerqueue_init(&timer->node);
979 timer->enabled = 0;
980 timer->func = f;
981 timer->rtc = rtc;
986 * @ timer: timer being set
987 * @ expires: time at which to expire the timer
988 * @ period: period that the timer will recur
992 int rtc_timer_start(struct rtc_device *rtc, struct rtc_timer *timer,
998 if (timer->enabled)
999 rtc_timer_remove(rtc, timer);
1001 timer->node.expires = expires;
1002 timer->period = period;
1004 ret = rtc_timer_enqueue(rtc, timer);
1012 * @ timer: timer being set
1016 void rtc_timer_cancel(struct rtc_device *rtc, struct rtc_timer *timer)
1019 if (timer->enabled)
1020 rtc_timer_remove(rtc, timer);