/** Re-initialize components initialized early with @c my_thread_global_init. Some mutexes were initialized before the instrumentation. Destroy + create them again, now that the instrumentation is in place. This is safe, since this function() is called before creating new threads, so the mutexes are not in use. */ void my_thread_global_reinit(void) { struct st_my_thread_var *tmp; DBUG_ASSERT(my_thread_global_init_done); #ifdef HAVE_PSI_INTERFACE my_init_mysys_psi_keys(); #endif mysql_mutex_destroy(&THR_LOCK_heap); mysql_mutex_init(key_THR_LOCK_heap, &THR_LOCK_heap, MY_MUTEX_INIT_FAST); mysql_mutex_destroy(&THR_LOCK_net); mysql_mutex_init(key_THR_LOCK_net, &THR_LOCK_net, MY_MUTEX_INIT_FAST); mysql_mutex_destroy(&THR_LOCK_myisam); mysql_mutex_init(key_THR_LOCK_myisam, &THR_LOCK_myisam, MY_MUTEX_INIT_SLOW); mysql_mutex_destroy(&THR_LOCK_malloc); mysql_mutex_init(key_THR_LOCK_malloc, &THR_LOCK_malloc, MY_MUTEX_INIT_FAST); mysql_mutex_destroy(&THR_LOCK_open); mysql_mutex_init(key_THR_LOCK_open, &THR_LOCK_open, MY_MUTEX_INIT_FAST); mysql_mutex_destroy(&THR_LOCK_charset); mysql_mutex_init(key_THR_LOCK_charset, &THR_LOCK_charset, MY_MUTEX_INIT_FAST); mysql_mutex_destroy(&THR_LOCK_threads); mysql_mutex_init(key_THR_LOCK_threads, &THR_LOCK_threads, MY_MUTEX_INIT_FAST); mysql_cond_destroy(&THR_COND_threads); mysql_cond_init(key_THR_COND_threads, &THR_COND_threads); tmp= mysys_thread_var(); DBUG_ASSERT(tmp); mysql_mutex_destroy(&tmp->mutex); mysql_mutex_init(key_my_thread_var_mutex, &tmp->mutex, MY_MUTEX_INIT_FAST); mysql_cond_destroy(&tmp->suspend); mysql_cond_init(key_my_thread_var_suspend, &tmp->suspend); }
/** Re-initialize components initialized early with @c my_thread_global_init. Some mutexes were initialized before the instrumentation. Destroy + create them again, now that the instrumentation is in place. This is safe, since this function() is called before creating new threads, so the mutexes are not in use. */ void my_thread_global_reinit(void) { struct st_my_thread_var *tmp; DBUG_ASSERT(my_thread_global_init_done); #ifdef HAVE_PSI_INTERFACE my_init_mysys_psi_keys(); #endif my_thread_destroy_common_mutex(); my_thread_init_common_mutex(); my_thread_destroy_internal_mutex(); my_thread_init_internal_mutex(); tmp= my_pthread_getspecific(struct st_my_thread_var*, THR_KEY_mysys); DBUG_ASSERT(tmp); my_thread_destory_thr_mutex(tmp); my_thread_init_thr_mutex(tmp); }