Eina_Bool eina_evlog_shutdown(void) { // yes - we don't free tyhe evlog buffers. they may be in used by debug th eina_spinlock_free(&_evlog_lock); return EINA_TRUE; }
static void _eina_stringshare_small_shutdown(void) { Eina_Stringshare_Small_Bucket **p_bucket, **p_bucket_end; p_bucket = _eina_small_share.buckets; p_bucket_end = p_bucket + 256; for (; p_bucket < p_bucket_end; p_bucket++) { Eina_Stringshare_Small_Bucket *bucket = *p_bucket; char **s, **s_end; if (!bucket) continue; s = (char **)bucket->strings; s_end = s + bucket->count; for (; s < s_end; s++) free(*s); free((void *)bucket->strings); free(bucket->lengths); free(bucket->references); free(bucket); *p_bucket = NULL; } eina_spinlock_free(&_mutex_small); }
EAPI int eio_shutdown(void) { Eio_File_Direct_Info *info; Eio_File_Char *cin; Eio_Progress *pg; Eio_File_Associate *asso; if (_eio_init_count <= 0) { ERR("Init count not greater than 0 in shutdown."); return 0; } if (--_eio_init_count != 0) return _eio_init_count; eina_log_timing(_eio_log_dom_global, EINA_LOG_STATE_START, EINA_LOG_STATE_SHUTDOWN); eio_monitor_shutdown(); eina_condition_free(&(memory_pool_cond)); eina_lock_free(&(memory_pool_mutex)); eina_spinlock_free(&(memory_pool_lock)); eina_lock_free(&(direct_info_pool.lock)); eina_lock_free(&(progress_pool.lock)); eina_lock_free(&(char_pool.lock)); eina_lock_free(&(associate_pool.lock)); /* Cleanup pool */ EINA_TRASH_CLEAN(&progress_pool.trash, pg) free(pg); progress_pool.count = 0; EINA_TRASH_CLEAN(&direct_info_pool.trash, info) free(info); direct_info_pool.count = 0; EINA_TRASH_CLEAN(&char_pool.trash, cin) free(cin); char_pool.count = 0; EINA_TRASH_CLEAN(&associate_pool.trash, asso) free(asso); associate_pool.count = 0; ecore_shutdown(); eina_log_domain_unregister(_eio_log_dom_global); _eio_log_dom_global = -1; eina_shutdown(); return _eio_init_count; }
EAPI int eio_shutdown(void) { Eio_File_Direct_Info *info; Eio_File_Char *cin; Eio_Progress *pg; Eio_File_Associate *asso; Eio_File *f; Eina_List *l; if (_eio_init_count <= 0) { ERR("Init count not greater than 0 in shutdown."); return 0; } if (--_eio_init_count != 0) return _eio_init_count; eina_log_timing(_eio_log_dom_global, EINA_LOG_STATE_START, EINA_LOG_STATE_SHUTDOWN); efl_del(io_manager); io_manager = NULL; EINA_LIST_FOREACH(tracked_thread, l, f) ecore_thread_cancel(f->thread); EINA_LIST_FREE(tracked_thread, f) { if (!ecore_thread_wait(f->thread, 0.5)) CRI("We couldn't terminate in less than 30s some pending IO. This can led to some crash."); } efreet_mime_shutdown(); eio_monitor_shutdown(); eina_condition_free(&(memory_pool_cond)); eina_lock_free(&(memory_pool_mutex)); eina_spinlock_free(&(memory_pool_lock)); eina_lock_free(&(direct_info_pool.lock)); eina_lock_free(&(progress_pool.lock)); eina_lock_free(&(char_pool.lock)); eina_lock_free(&(associate_pool.lock)); /* Cleanup pool */ EINA_TRASH_CLEAN(&progress_pool.trash, pg) free(pg); progress_pool.count = 0; EINA_TRASH_CLEAN(&direct_info_pool.trash, info) free(info); direct_info_pool.count = 0; EINA_TRASH_CLEAN(&char_pool.trash, cin) free(cin); char_pool.count = 0; EINA_TRASH_CLEAN(&associate_pool.trash, asso) free(asso); associate_pool.count = 0; ecore_shutdown(); eina_log_domain_unregister(_eio_log_dom_global); _eio_log_dom_global = -1; eina_shutdown(); return _eio_init_count; }
static void _config_free(Email_Config *cfg) { eina_spinlock_free(&cfg->lock); }