Lines Matching refs:timer
290 thread_expire_timer (struct thread_node *self, struct timer_node *timer) in thread_expire_timer() argument
292 self->current_timer = timer; /* Lets timer_delete know timer is running. */ in thread_expire_timer()
296 switch (__builtin_expect (timer->event.sigev_notify, SIGEV_SIGNAL)) in thread_expire_timer()
311 info.si_signo = timer->event.sigev_signo; in thread_expire_timer()
313 info.si_pid = timer->creator_pid; in thread_expire_timer()
315 info.si_value = timer->event.sigev_value; in thread_expire_timer()
320 if (pthread_kill (self->captured, timer->event.sigev_signo) != 0) in thread_expire_timer()
322 if (pthread_kill (self->id, timer->event.sigev_signo) != 0) in thread_expire_timer()
329 timer->event.sigev_notify_function (timer->event.sigev_value); in thread_expire_timer()
366 struct timer_node *timer = NULL; in thread_func() local
374 timer = timer_links2ptr (first); in thread_func()
378 __clock_gettime (timer->clock, &now); in thread_func()
385 if (timespec_compare (&now, &timer->expirytime) < 0) in thread_func()
390 if (__builtin_expect (timer->value.it_interval.tv_sec, 0) != 0 in thread_func()
391 || timer->value.it_interval.tv_nsec != 0) in thread_func()
393 timer->overrun_count = 0; in thread_func()
394 timespec_add (&timer->expirytime, &timer->expirytime, in thread_func()
395 &timer->value.it_interval); in thread_func()
396 while (timespec_compare (&timer->expirytime, &now) < 0) in thread_func()
398 timespec_add (&timer->expirytime, &timer->expirytime, in thread_func()
399 &timer->value.it_interval); in thread_func()
400 if (timer->overrun_count < DELAYTIMER_MAX) in thread_func()
401 ++timer->overrun_count; in thread_func()
403 __timer_thread_queue_timer (self, timer); in thread_func()
406 thread_expire_timer (self, timer); in thread_func()
412 timer = timer_links2ptr (first); in thread_func()
420 if (timer != NULL) in thread_func()
422 &timer->expirytime); in thread_func()
447 struct timer_node *timer = timer_links2ptr (iter); in __timer_thread_queue_timer() local
449 if (timespec_compare (&insert->expirytime, &timer->expirytime) < 0) in __timer_thread_queue_timer()
526 struct timer_node *timer = timer_links2ptr (node); in __timer_alloc() local
528 timer->inuse = TIMER_INUSE; in __timer_alloc()
529 timer->refcount = 1; in __timer_alloc()
530 return timer; in __timer_alloc()
540 __timer_dealloc (struct timer_node *timer) in __timer_dealloc() argument
542 assert (timer->refcount == 0); in __timer_dealloc()
543 timer->thread = NULL; /* Break association between timer and thread. */ in __timer_dealloc()
544 timer->inuse = TIMER_FREE; in __timer_dealloc()
545 list_append (&timer_free_list, &timer->links); in __timer_dealloc()