Lines Matching refs:timer

62 	mk_timer_t			timer;
68 timer = (mk_timer_t)zalloc(mk_timer_zone);
69 if (timer == NULL)
78 zfree(mk_timer_zone, timer);
83 simple_lock_init(&timer->lock, 0);
84 thread_call_setup(&timer->call_entry, mk_timer_expire, timer);
85 timer->is_armed = timer->is_dead = FALSE;
86 timer->active = 0;
88 timer->port = port;
89 ipc_kobject_set_atomically(port, (ipc_kobject_t)timer, IKOT_TIMER);
102 mk_timer_t timer = NULL;
106 timer = (mk_timer_t)port->ip_kobject;
107 assert(timer != NULL);
109 simple_lock(&timer->lock);
110 assert(timer->port == port);
114 if (timer != NULL) {
115 if (thread_call_cancel(&timer->call_entry))
116 timer->active--;
117 timer->is_armed = FALSE;
119 timer->is_dead = TRUE;
120 if (timer->active == 0) {
121 simple_unlock(&timer->lock);
122 zfree(mk_timer_zone, timer);
128 simple_unlock(&timer->lock);
149 mk_timer_t timer = p0;
152 simple_lock(&timer->lock);
154 if (timer->active > 1) {
155 timer->active--;
156 simple_unlock(&timer->lock);
160 port = timer->port;
162 assert(timer->active == 1);
164 while (timer->is_armed && timer->active == 1) {
167 timer->is_armed = FALSE;
168 simple_unlock(&timer->lock);
179 simple_lock(&timer->lock);
182 if (--timer->active == 0 && timer->is_dead) {
183 simple_unlock(&timer->lock);
184 zfree(mk_timer_zone, timer);
190 simple_unlock(&timer->lock);
194 * mk_timer_destroy_trap: Destroy the Mach port associated with a timer
231 * mk_timer_arm_trap: Start (arm) a timer
236 * args->expire_time Time when timer expires
249 mk_timer_t timer;
259 timer = (mk_timer_t)port->ip_kobject;
260 assert(timer != NULL);
261 simple_lock(&timer->lock);
262 assert(timer->port == port);
265 if (!timer->is_dead) {
266 timer->is_armed = TRUE;
268 if (!thread_call_enter_delayed(&timer->call_entry, expire_time))
269 timer->active++;
272 simple_unlock(&timer->lock);
283 * mk_timer_cancel_trap: Cancel a timer
288 * args->result_time The armed time of the cancelled timer (return value)
302 mk_timer_t timer;
312 timer = (mk_timer_t)port->ip_kobject;
313 assert(timer != NULL);
314 simple_lock(&timer->lock);
315 assert(timer->port == port);
318 if (timer->is_armed) {
319 armed_time = timer->call_entry.tc_call.deadline;
320 if (thread_call_cancel(&timer->call_entry))
321 timer->active--;
322 timer->is_armed = FALSE;
325 simple_unlock(&timer->lock);