Lines Matching refs:timer

23 bool timer_expired(const struct hv_timer *timer, uint64_t now, uint64_t *delta)  in timer_expired()  argument
28 if ((timer->timeout != 0UL) && (now < timer->timeout)) { in timer_expired()
30 delt = timer->timeout - now; in timer_expired()
40 bool timer_is_started(const struct hv_timer *timer) in timer_is_started() argument
42 return (!list_empty(&timer->node)); in timer_is_started()
45 static void run_timer(const struct hv_timer *timer) in run_timer() argument
48 if ((timer->func != NULL) && (timer->timeout != 0UL)) { in run_timer()
49 timer->func(timer->priv_data); in run_timer()
52 TRACE_2L(TRACE_TIMER_ACTION_PCKUP, timer->timeout, 0UL); in run_timer()
57 struct hv_timer *timer = NULL; in update_physical_timer() local
61 timer = container_of((&cpu_timer->timer_list)->next, in update_physical_timer()
65 msr_write(MSR_IA32_TSC_DEADLINE, timer->timeout); in update_physical_timer()
73 struct hv_timer *timer) in local_add_timer() argument
77 uint64_t tsc = timer->timeout; in local_add_timer()
89 list_add(&timer->node, prev); in local_add_timer()
94 int32_t add_timer(struct hv_timer *timer) in add_timer() argument
101 if ((timer == NULL) || (timer->func == NULL) || (timer->timeout == 0UL)) { in add_timer()
104 ASSERT(list_empty(&timer->node), "add timer again!\n"); in add_timer()
107 if (timer->mode == TICK_MODE_PERIODIC) { in add_timer()
108 timer->period_in_cycle = max(timer->period_in_cycle, us_to_ticks(MIN_TIMER_PERIOD_US)); in add_timer()
116 if (local_add_timer(cpu_timer, timer)) { in add_timer()
121 TRACE_2L(TRACE_TIMER_ACTION_ADDED, timer->timeout, 0UL); in add_timer()
128 void initialize_timer(struct hv_timer *timer, in initialize_timer() argument
132 if (timer != NULL) { in initialize_timer()
133 timer->func = func; in initialize_timer()
134 timer->priv_data = priv_data; in initialize_timer()
135 timer->timeout = timeout; in initialize_timer()
137 timer->mode = TICK_MODE_PERIODIC; in initialize_timer()
138 timer->period_in_cycle = period_in_cycle; in initialize_timer()
140 timer->mode = TICK_MODE_ONESHOT; in initialize_timer()
141 timer->period_in_cycle = 0UL; in initialize_timer()
143 INIT_LIST_HEAD(&timer->node); in initialize_timer()
147 void update_timer(struct hv_timer *timer, uint64_t timeout, uint64_t period) in update_timer() argument
149 if (timer != NULL) { in update_timer()
150 timer->timeout = timeout; in update_timer()
152 timer->mode = TICK_MODE_PERIODIC; in update_timer()
153 timer->period_in_cycle = period; in update_timer()
155 timer->mode = TICK_MODE_ONESHOT; in update_timer()
156 timer->period_in_cycle = 0UL; in update_timer()
161 void del_timer(struct hv_timer *timer) in del_timer() argument
166 if ((timer != NULL) && !list_empty(&timer->node)) { in del_timer()
167 list_del_init(&timer->node); in del_timer()
183 struct hv_timer *timer; in timer_softirq() local
198 timer = container_of(pos, struct hv_timer, node); in timer_softirq()
201 if ((timer->timeout <= current_tsc) && (tries != 0U)) { in timer_softirq()
202 del_timer(timer); in timer_softirq()
204 run_timer(timer); in timer_softirq()
206 if (timer->mode == TICK_MODE_PERIODIC) { in timer_softirq()
208 timer->timeout += timer->period_in_cycle; in timer_softirq()
209 (void)local_add_timer(cpu_timer, timer); in timer_softirq()
211 timer->timeout = 0UL; in timer_softirq()