Lines Matching defs:timer

1 /*	$NetBSD: timer.c,v 1.15 2025/01/26 16:25:39 christos Exp $	*/
31 #include <isc/timer.h>
43 uv_timer_t timer;
55 isc_timer_t *timer;
68 timer = isc_mem_get(loop->mctx, sizeof(*timer));
69 *timer = (isc_timer_t){
75 isc_loop_attach(loop, &timer->loop);
77 r = uv_timer_init(&loop->loop, &timer->timer);
79 uv_handle_set_data(&timer->timer, timer);
81 *timerp = timer;
85 isc_timer_stop(isc_timer_t *timer) {
86 REQUIRE(VALID_TIMER(timer));
88 if (!atomic_compare_exchange_strong_acq_rel(&timer->running,
95 /* Stop the timer, if the loops are matching */
96 if (timer->loop == isc_loop()) {
97 uv_timer_stop(&timer->timer);
103 isc_timer_t *timer = uv_handle_get_data(handle);
105 REQUIRE(VALID_TIMER(timer));
107 if (!atomic_load_acquire(&timer->running)) {
108 uv_timer_stop(&timer->timer);
112 timer->cb(timer->cbarg);
116 isc_timer_start(isc_timer_t *timer, isc_timertype_t type,
122 REQUIRE(VALID_TIMER(timer));
124 REQUIRE(timer->loop == isc_loop());
126 loop = timer->loop;
136 timer->timeout = isc_interval_ms(interval);
137 timer->repeat = 0;
140 timer->timeout = timer->repeat = isc_interval_ms(interval);
146 atomic_store_release(&timer->running, true);
147 r = uv_timer_start(&timer->timer, timer_cb, timer->timeout,
148 timer->repeat);
154 isc_timer_t *timer = uv_handle_get_data(handle);
157 REQUIRE(VALID_TIMER(timer));
159 loop = timer->loop;
161 isc_mem_put(loop->mctx, timer, sizeof(*timer));
168 isc_timer_t *timer = arg;
170 atomic_store_release(&timer->running, false);
171 uv_timer_stop(&timer->timer);
172 uv_close(&timer->timer, timer_close);
177 isc_timer_t *timer = NULL;
181 timer = *timerp;
184 REQUIRE(timer->loop == isc_loop());
186 timer_destroy(timer);
191 isc_timer_t *timer = NULL;
195 timer = *timerp;
198 isc_timer_stop(timer);
199 isc_async_run(timer->loop, timer_destroy, timer);