void destroy_container_resource(container_handle_t *ct)
{
    avl_destroy(&ct->obj_info_list);
    avl_destroy(&ct->metadata_cache);
    OS_RWLOCK_DESTROY(&ct->ct_lock);
    OS_RWLOCK_DESTROY(&ct->metadata_cache_lock);
    avl_remove(g_container_list, ct);

    OS_FREE(ct);
}
void ofs_exit_system(void)
{
    if (!g_container_list)
    {
        LOG_ERROR("Exit ct system many times. g_container_list(%p)\n", g_container_list);
        return;
    }

    (void)avl_walk_all(g_container_list, (avl_walk_cb_t)close_one_container, NULL);

    OS_FREE(g_container_list);
    g_container_list = NULL;
    OS_RWLOCK_DESTROY(&g_container_list_rwlock);

	return;
}
Example #3
0
void log_close(void *log)
{
    log_t *tmp_log = (log_t *)log;
    
    if (NULL == tmp_log)
    {
        return;
    }

    if (NULL != tmp_log->disk_hnd)
    {
        char date_time[DATA_TIME_STR_LEN];
        
        os_get_date_time_string(date_time, DATA_TIME_STR_LEN);
        os_file_printf(tmp_log->disk_hnd, "%s %s\n", date_time, "NOTE: LOG FILE CLOSE!!!");
        os_file_close(tmp_log->disk_hnd);
        tmp_log->disk_hnd = NULL;
    }

    OS_RWLOCK_DESTROY(&tmp_log->rwlock);
    OS_FREE(tmp_log);
}