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); }
static void k5_cli_ipc_thread_fini (void) { int err = 0; err = k5_mutex_lock (&g_service_ports_mutex); if (!err) { int i; for (i = 0; i < KIPC_SERVICE_COUNT; i++) { if (MACH_PORT_VALID (g_service_ports[i].service_port)) { mach_port_destroy (mach_task_self (), g_service_ports[i].service_port); g_service_ports[i].service_port = MACH_PORT_NULL; } } k5_mutex_unlock (&g_service_ports_mutex); } k5_key_delete (K5_KEY_IPC_CONNECTION_INFO); k5_mutex_destroy (&g_service_ports_mutex); }
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; }