Lines Matching refs:timer
95 devtimer_valid(devtimer_ref timer) in devtimer_valid() argument
97 return timer->dt_callout != NULL; in devtimer_valid()
101 devtimer_retain(devtimer_ref timer) in devtimer_retain() argument
103 os_ref_retain(&timer->dt_retain_count); in devtimer_retain()
107 devtimer_invalidate(devtimer_ref timer) in devtimer_invalidate() argument
109 devtimer_cancel(timer); in devtimer_invalidate()
110 timer->dt_arg0 = NULL; in devtimer_invalidate()
111 if (timer->dt_callout != NULL) { in devtimer_invalidate()
112 thread_call_free(timer->dt_callout); in devtimer_invalidate()
113 timer->dt_callout = NULL; in devtimer_invalidate()
119 devtimer_release(devtimer_ref timer) in devtimer_release() argument
121 if (os_ref_release(&timer->dt_retain_count) == 0) { in devtimer_release()
122 devtimer_invalidate(timer); in devtimer_release()
123 kfree_type(struct devtimer_s, timer); in devtimer_release()
134 devtimer_ref timer = (devtimer_ref)param0; in devtimer_process() local
136 process_func = timer->dt_process_func; in devtimer_process()
138 (*process_func)(timer, devtimer_process_func_event_lock); in devtimer_process()
140 timeout_func = timer->dt_timeout_func; in devtimer_process()
142 timer->dt_timeout_func = NULL; in devtimer_process()
143 if (timer->dt_generation == generation) { in devtimer_process()
144 (*timeout_func)(timer->dt_arg0, timer->dt_arg1, timer->dt_arg2); in devtimer_process()
147 devtimer_release(timer); in devtimer_process()
149 (*process_func)(timer, devtimer_process_func_event_unlock); in devtimer_process()
155 devtimer_arg0(devtimer_ref timer) in devtimer_arg0() argument
157 return timer->dt_arg0; in devtimer_arg0()
163 devtimer_ref timer; in devtimer_create() local
165 timer = kalloc_type(struct devtimer_s, Z_WAITOK | Z_ZERO | Z_NOFAIL); in devtimer_create()
166 os_ref_init(&timer->dt_retain_count, NULL); in devtimer_create()
167 timer->dt_callout = thread_call_allocate(devtimer_process, timer); in devtimer_create()
168 if (timer->dt_callout == NULL) { in devtimer_create()
170 devtimer_release(timer); in devtimer_create()
171 timer = NULL; in devtimer_create()
173 timer->dt_process_func = process_func; in devtimer_create()
174 timer->dt_arg0 = arg0; in devtimer_create()
175 return timer; in devtimer_create()
179 devtimer_set_absolute(devtimer_ref timer, in devtimer_set_absolute() argument
184 if (timer->dt_callout == NULL) { in devtimer_set_absolute()
188 devtimer_cancel(timer); in devtimer_set_absolute()
192 timer->dt_timeout_func = timeout_func; in devtimer_set_absolute()
193 timer->dt_arg1 = arg1; in devtimer_set_absolute()
194 timer->dt_arg2 = arg2; in devtimer_set_absolute()
197 timer->dt_generation++; in devtimer_set_absolute()
198 devtimer_retain(timer); in devtimer_set_absolute()
199 thread_call_enter1_delayed(timer->dt_callout, in devtimer_set_absolute()
200 &timer->dt_generation, in devtimer_set_absolute()
206 devtimer_set_relative(devtimer_ref timer, in devtimer_set_relative() argument
216 devtimer_set_absolute(timer, abs_time, timeout_func, arg1, arg2); in devtimer_set_relative()
221 devtimer_cancel(devtimer_ref timer) in devtimer_cancel() argument
223 if (timer->dt_timeout_func != NULL) { in devtimer_cancel()
224 timer->dt_timeout_func = NULL; in devtimer_cancel()
225 if (timer->dt_callout != NULL) { in devtimer_cancel()
227 if (thread_call_cancel(timer->dt_callout)) { in devtimer_cancel()
228 devtimer_release(timer); in devtimer_cancel()
238 devtimer_enabled(devtimer_ref timer) in devtimer_enabled() argument
240 return timer->dt_timeout_func != NULL; in devtimer_enabled()