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 */
657 * @timer: pointer to the pie mode hrtimer
663 enum hrtimer_restart rtc_pie_update_irq(struct hrtimer *timer)
669 rtc = container_of(timer, struct rtc_device, pie_timer);
672 count = hrtimer_forward_now(timer, period);
727 * We always cancel the timer here first, because otherwise
728 * we could run into BUG_ON(timer->state != HRTIMER_STATE_CALLBACK);
729 * when we manage to start the timer before the callback
796 * @timer: timer being added.
798 * Enqueues a timer onto the rtc devices timerqueue and sets
801 * Sets the enabled bit on the added timer.
805 static int rtc_timer_enqueue(struct rtc_device *rtc, struct rtc_timer *timer)
816 timer->enabled = 1;
826 timerqueue_add(&rtc->timerqueue, &timer->node);
827 trace_rtc_timer_enqueue(timer);
828 if (!next || ktime_before(timer->node.expires, next->expires)) {
831 alarm.time = rtc_ktime_to_tm(timer->node.expires);
838 timerqueue_del(&rtc->timerqueue, &timer->node);
839 trace_rtc_timer_dequeue(timer);
840 timer->enabled = 0;
859 * @timer: timer being removed.
861 * Removes a timer onto the rtc devices timerqueue and sets
864 * Clears the enabled bit on the removed timer.
868 static void rtc_timer_remove(struct rtc_device *rtc, struct rtc_timer *timer)
872 timerqueue_del(&rtc->timerqueue, &timer->node);
873 trace_rtc_timer_dequeue(timer);
874 timer->enabled = 0;
875 if (next == &timer->node) {
905 struct rtc_timer *timer;
921 /* expire timer */
922 timer = container_of(next, struct rtc_timer, node);
923 timerqueue_del(&rtc->timerqueue, &timer->node);
924 trace_rtc_timer_dequeue(timer);
925 timer->enabled = 0;
926 if (timer->func)
927 timer->func(timer->rtc);
929 trace_rtc_timer_fired(timer);
931 if (ktime_to_ns(timer->period)) {
932 timer->node.expires = ktime_add(timer->node.expires,
933 timer->period);
934 timer->enabled = 1;
935 timerqueue_add(&rtc->timerqueue, &timer->node);
936 trace_rtc_timer_enqueue(timer);
956 timer = container_of(next, struct rtc_timer, node);
957 timerqueue_del(&rtc->timerqueue, &timer->node);
958 trace_rtc_timer_dequeue(timer);
959 timer->enabled = 0;
972 * @timer: timer to be intiialized
973 * @f: function pointer to be called when timer fires
978 void rtc_timer_init(struct rtc_timer *timer, void (*f)(struct rtc_device *r),
981 timerqueue_init(&timer->node);
982 timer->enabled = 0;
983 timer->func = f;
984 timer->rtc = rtc;
989 * @ timer: timer being set
990 * @ expires: time at which to expire the timer
991 * @ period: period that the timer will recur
995 int rtc_timer_start(struct rtc_device *rtc, struct rtc_timer *timer,
1001 if (timer->enabled)
1002 rtc_timer_remove(rtc, timer);
1004 timer->node.expires = expires;
1005 timer->period = period;
1007 ret = rtc_timer_enqueue(rtc, timer);
1015 * @ timer: timer being set
1019 void rtc_timer_cancel(struct rtc_device *rtc, struct rtc_timer *timer)
1022 if (timer->enabled)
1023 rtc_timer_remove(rtc, timer);