Lines Matching defs:manager
65 isc_timermgr_t *manager;
70 /*! Locked by manager lock. */
90 /* Locked by manager lock. */
105 isc_timermgr_t *manager;
115 manager = timer->manager;
155 isc_heap_increased(manager->heap, timer->index);
158 isc_heap_decreased(manager->heap, timer->index);
166 isc_heap_insert(manager->heap, timer);
167 manager->nscheduled++;
176 * run thread, or explicitly setting the value in the manager.
181 SIGNAL(&manager->wakeup);
190 isc_timermgr_t *manager;
196 manager = timer->manager;
201 isc_heap_delete(manager->heap, timer->index);
203 INSIST(manager->nscheduled > 0);
204 manager->nscheduled--;
207 SIGNAL(&manager->wakeup);
230 isc_mem_put(timer->manager->mctx, event, event0->ev_size);
246 isc_timer_create(isc_timermgr_t *manager, isc_timertype_t type,
250 REQUIRE(VALID_MANAGER(manager));
259 * Create a new 'type' timer managed by 'manager'. The timers
291 timer = isc_mem_get(manager->mctx, sizeof(*timer));
293 timer->manager = manager;
298 isc_mem_put(manager->mctx, timer, sizeof(*timer));
330 LOCK(&manager->lock);
344 APPEND(manager->timers, timer, link);
347 UNLOCK(&manager->lock);
353 isc_mem_put(manager->mctx, timer, sizeof(*timer));
365 isc_timermgr_t *manager;
375 manager = timer->manager;
376 REQUIRE(VALID_MANAGER(manager));
403 LOCK(&manager->lock);
429 UNLOCK(&manager->lock);
465 * but we cannot without locking the manager lock too, which we
480 isc_timermgr_t *manager = NULL;
487 manager = timer->manager;
489 LOCK(&manager->lock);
496 UNLINK(manager->timers, timer, link);
498 UNLOCK(&manager->lock);
503 isc_mem_put(manager->mctx, timer, sizeof(*timer));
507 timer_post_event(isc_timermgr_t *manager, isc_timer_t *timer,
513 manager->mctx, timer, type, timer->action, timer->arg,
530 dispatch(isc_timermgr_t *manager, isc_time_t *now) {
538 * The caller must be holding the manager lock.
541 while (manager->nscheduled > 0 && !done) {
542 timer = isc_heap_element(manager->heap, 1);
593 timer_post_event(manager, timer, type);
597 isc_heap_delete(manager->heap, 1);
598 manager->nscheduled--;
611 manager->due = timer->due;
622 isc_timermgr_t *manager = uap;
626 LOCK(&manager->lock);
627 while (!manager->done) {
632 dispatch(manager, &now);
634 if (manager->nscheduled > 0) {
635 XTRACETIME2("waituntil", manager->due, now);
636 result = WAITUNTIL(&manager->wakeup, &manager->lock,
637 &manager->due);
642 WAIT(&manager->wakeup, &manager->lock);
646 UNLOCK(&manager->lock);
682 isc_timermgr_t *manager;
685 * Create a timer manager.
690 manager = isc_mem_get(mctx, sizeof(*manager));
692 manager->magic = TIMER_MANAGER_MAGIC;
693 manager->mctx = NULL;
694 manager->done = false;
695 INIT_LIST(manager->timers);
696 manager->nscheduled = 0;
697 isc_time_settoepoch(&manager->due);
698 manager->heap = NULL;
699 isc_heap_create(mctx, sooner, set_index, 0, &manager->heap);
700 isc_mutex_init(&manager->lock);
701 manager->mctx);
702 isc_condition_init(&manager->wakeup);
703 isc_thread_create(run, manager, &manager->thread);
704 isc_thread_setname(manager->thread, "timer");
706 *managerp = manager;
712 isc_timermgr_poke(isc_timermgr_t *manager) {
713 REQUIRE(VALID_MANAGER(manager));
715 SIGNAL(&manager->wakeup);
720 isc_timermgr_t *manager;
723 * Destroy a timer manager.
727 manager = *managerp;
728 REQUIRE(VALID_MANAGER(manager));
730 LOCK(&manager->lock);
732 REQUIRE(EMPTY(manager->timers));
733 manager->done = true;
736 SIGNAL(&manager->wakeup);
738 UNLOCK(&manager->lock);
743 isc_thread_join(manager->thread, NULL);
748 (void)isc_condition_destroy(&manager->wakeup);
749 isc_mutex_destroy(&manager->lock);
750 isc_heap_destroy(&manager->heap);
751 manager->magic = 0;
752 isc_mem_putanddetach(&manager->mctx, manager, sizeof(*manager));