Ejemplo n.º 1
0
/**
 * Clean up schedule. deinitialise and free scheduler.
 * Threads MUST be stopped before calling this function.
 */
void
schedule_cleanup(schedule_type* schedule)
{
    if (!schedule) return;
    ods_log_debug("[%s] cleanup schedule", schedule_str);

    /* Disable any pending alarm before we destroy the pthread stuff
     * to prevent segfaults */
    alarm(0);
    
    if (schedule->tasks) {
        task_delfunc(schedule->tasks->root, 1);
        task_delfunc(schedule->tasks_by_name->root, 1);
        ldns_rbtree_free(schedule->tasks);
        ldns_rbtree_free(schedule->tasks_by_name);
        schedule->tasks = NULL;
    }
    pthread_mutex_destroy(&schedule->schedule_lock);
    pthread_cond_destroy(&schedule->schedule_cond);
    free(schedule);
}
Ejemplo n.º 2
0
/**
 * Free zonelist.
 *
 */
void
zonelist_free(zonelist_type* zl)
{
    allocator_type* allocator;
    lock_basic_type zl_lock;
    if (!zl) {
        return;
    }
    if (zl->zones) {
        node_delfunc(zl->zones->root);
        ldns_rbtree_free(zl->zones);
        zl->zones = NULL;
    }
    allocator = zl->allocator;
    zl_lock = zl->zl_lock;
    allocator_deallocate(allocator, (void*) zl);
    lock_basic_destroy(&zl_lock);
    return;
}
Ejemplo n.º 3
0
/**
 * Clean up a zonelist.
 *
 */
void
zonelist_cleanup(zonelist_type* zl)
{
    allocator_type* allocator;
    lock_basic_type zl_lock;
    if (!zl) {
        return;
    }
    ods_log_debug("[%s] cleanup zonelist", zl_str);
    if (zl->zones) {
        zone_delfunc(zl->zones->root);
        ldns_rbtree_free(zl->zones);
        zl->zones = NULL;
    }
    allocator = zl->allocator;
    zl_lock = zl->zl_lock;
    allocator_deallocate(allocator, (void*) zl);
    lock_basic_destroy(&zl_lock);
    return;
}