void krb5int_thread_support_fini (void) { if (! INITIALIZER_RAN (krb5int_thread_support_init)) return; #ifdef SHOW_INITFINI_FUNCS printf("krb5int_thread_support_fini\n"); #endif #ifndef ENABLE_THREADS /* Do nothing. */ #elif defined(_WIN32) /* ... free stuff ... */ TlsFree(tls_idx); DeleteCriticalSection(&key_lock); #else /* POSIX */ if (! INITIALIZER_RAN(krb5int_thread_support_init)) return; if (K5_PTHREADS_LOADED) pthread_key_delete(key); /* ... delete stuff ... */ k5_mutex_destroy(&key_lock); #endif krb5int_fini_fac(); }
static void kim_os_library_thread_fini (void) { if (!INITIALIZER_RAN (kim_os_library_thread_init) || PROGRAM_EXITING ()) { return; } k5_mutex_destroy (&g_bundle_lookup_mutex); }
void krb5int_lib_fini(void) { if (!INITIALIZER_RAN(krb5int_lib_init) || PROGRAM_EXITING()) { #ifdef SHOW_INITFINI_FUNCS printf("krb5int_lib_fini: skipping\n"); #endif return; } #ifdef SHOW_INITFINI_FUNCS printf("krb5int_lib_fini\n"); #endif k5_mutex_destroy(&krb5int_us_time_mutex); krb5int_cc_finalize(); krb5int_kt_finalize(); krb5int_rc_terminate(); #if defined(_WIN32) || defined(USE_CCAPI) krb5_stdcc_shutdown(); #endif #if !USE_BUNDLE_ERROR_STRINGS remove_error_table(&et_krb5_error_table); remove_error_table(&et_kv5m_error_table); remove_error_table(&et_kdb5_error_table); remove_error_table(&et_asn1_error_table); remove_error_table(&et_k524_error_table); #endif krb5int_set_error_info_callout_fn (0); }
void kim_error_terminate (void) { if (!INITIALIZER_RAN (kim_error_initialize) || PROGRAM_EXITING ()) { return; } k5_key_delete (K5_KEY_KIM_ERROR_MESSAGE); k5_mutex_destroy (&kim_error_lock); }
void my_fini(void) { // fprintf(stderr, "%s:%d: Python module finalization\n", F, __LINE__); if (! INITIALIZER_RAN (my_init)) return; Py_DECREF (locatefn); locatefn = 0; Py_Finalize (); }
void krb5int_thread_support_fini (void) { if (! INITIALIZER_RAN (krb5int_thread_support_init)) return; #ifdef SHOW_INITFINI_FUNCS printf("krb5int_thread_support_fini\n"); #endif #ifndef ENABLE_THREADS /* Do nothing. */ #elif defined(_WIN32) /* ... free stuff ... */ TlsFree(tls_idx); DeleteCriticalSection(&key_lock); #else /* POSIX */ if (! INITIALIZER_RAN(krb5int_thread_support_init)) return; if (K5_PTHREADS_LOADED) pthread_key_delete(key); /* ... delete stuff ... */ k5_mutex_destroy(&key_lock); #endif #ifdef DEBUG_THREADS_STATS fflush(stats_logfile); /* XXX Should close if not stderr, in case unloading library but not exiting. */ #endif krb5int_fini_fac(); }
void profile_library_finalizer(void) { if (! INITIALIZER_RAN(profile_library_initializer) || PROGRAM_EXITING()) { #ifdef SHOW_INITFINI_FUNCS printf("profile_library_finalizer: skipping\n"); #endif return; } #ifdef SHOW_INITFINI_FUNCS printf("profile_library_finalizer\n"); #endif k5_mutex_destroy(&g_shared_trees_mutex); remove_error_table(&et_prof_error_table); }
void com_err_terminate(void) { struct et_list *e, *enext; if (! INITIALIZER_RAN(com_err_initialize) || PROGRAM_EXITING()) { #ifdef SHOW_INITFINI_FUNCS printf("com_err_terminate: skipping\n"); #endif return; } #ifdef SHOW_INITFINI_FUNCS printf("com_err_terminate\n"); #endif k5_key_delete(K5_KEY_COM_ERR); k5_mutex_destroy(&com_err_hook_lock); k5_mutex_lock(&et_list_lock); for (e = et_list; e; e = enext) { enext = e->next; free(e); } k5_mutex_unlock(&et_list_lock); k5_mutex_destroy(&et_list_lock); terminated = 1; }
void gssint_mechglue_fini(void) { if (!INITIALIZER_RAN(gssint_mechglue_init) || PROGRAM_EXITING()) { #ifdef SHOW_INITFINI_FUNCS printf("gssint_mechglue_fini: skipping\n"); #endif return; } #ifdef SHOW_INITFINI_FUNCS printf("gssint_mechglue_fini\n"); #endif #ifdef _GSS_STATIC_LINK gss_spnegoint_lib_fini(); gss_krb5int_lib_fini(); #endif k5_mutex_destroy(&g_mechSetLock); k5_mutex_destroy(&g_mechListLock); free_mechSet(); freeMechList(); remove_error_table(&et_ggss_error_table); gssint_mecherrmap_destroy(); }
void kdb_fini_lock_list(void) { if (INITIALIZER_RAN(kdb_init_lock_list)) k5_mutex_destroy(&db_lock); }
void cryptoint_cleanup_library (void) { if (!INITIALIZER_RAN(cryptoint_initialize_library)) return; krb5int_prng_cleanup (); }