diff options
author | Sergei Golubchik <sergii@pisem.net> | 2011-07-13 21:10:18 +0200 |
---|---|---|
committer | Sergei Golubchik <sergii@pisem.net> | 2011-07-13 21:10:18 +0200 |
commit | a8446356373e84530a4c83759370178ec2bce571 (patch) | |
tree | 51b83e92f9aa489a3308a6ea66546e06ae025689 /storage/federatedx | |
parent | aac3a1eac9f6aa347311e7cce7547e269bed5ea0 (diff) | |
download | mariadb-git-a8446356373e84530a4c83759370178ec2bce571.tar.gz |
use PSI wrappers in aria and other non-MySQL code
Diffstat (limited to 'storage/federatedx')
-rw-r--r-- | storage/federatedx/federatedx_io.cc | 2 | ||||
-rw-r--r-- | storage/federatedx/federatedx_txn.cc | 8 | ||||
-rw-r--r-- | storage/federatedx/ha_federatedx.cc | 68 | ||||
-rw-r--r-- | storage/federatedx/ha_federatedx.h | 2 |
4 files changed, 54 insertions, 26 deletions
diff --git a/storage/federatedx/federatedx_io.cc b/storage/federatedx/federatedx_io.cc index 3e79c3f6d76..34d3dde3ebb 100644 --- a/storage/federatedx/federatedx_io.cc +++ b/storage/federatedx/federatedx_io.cc @@ -63,7 +63,7 @@ federatedx_io::federatedx_io(FEDERATEDX_SERVER *aserver) DBUG_ENTER("federatedx_io::federatedx_io"); DBUG_ASSERT(server); - safe_mutex_assert_owner(&server->mutex); + mysql_mutex_assert_owner(&server->mutex); server->io_count++; DBUG_VOID_RETURN; diff --git a/storage/federatedx/federatedx_txn.cc b/storage/federatedx/federatedx_txn.cc index 84c7cd50e8d..5049b1ff79f 100644 --- a/storage/federatedx/federatedx_txn.cc +++ b/storage/federatedx/federatedx_txn.cc @@ -111,7 +111,7 @@ int federatedx_txn::acquire(FEDERATEDX_SHARE *share, bool readonly, if (!io) { /* check to see if there are any unowned IO connections */ - pthread_mutex_lock(&server->mutex); + mysql_mutex_lock(&server->mutex); if ((io= server->idle_list)) { server->idle_list= io->idle_next; @@ -123,7 +123,7 @@ int federatedx_txn::acquire(FEDERATEDX_SHARE *share, bool readonly, io->txn_next= txn_list; txn_list= io; - pthread_mutex_unlock(&server->mutex); + mysql_mutex_unlock(&server->mutex); } if (io->busy) @@ -188,10 +188,10 @@ void federatedx_txn::release_scan() /* reset some values */ io->readonly= TRUE; - pthread_mutex_lock(&server->mutex); + mysql_mutex_lock(&server->mutex); io->idle_next= server->idle_list; server->idle_list= io; - pthread_mutex_unlock(&server->mutex); + mysql_mutex_unlock(&server->mutex); returned++; } } diff --git a/storage/federatedx/ha_federatedx.cc b/storage/federatedx/ha_federatedx.cc index f0e2289fb4c..f79756c16ce 100644 --- a/storage/federatedx/ha_federatedx.cc +++ b/storage/federatedx/ha_federatedx.cc @@ -327,7 +327,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /* Variables for federatedx share methods */ static HASH federatedx_open_tables; // To track open tables static HASH federatedx_open_servers; // To track open servers -pthread_mutex_t federatedx_mutex; // To init the hash +mysql_mutex_t federatedx_mutex; // To init the hash const char ident_quote_char= '`'; // Character for quoting // identifiers const char value_quote_char= '\''; // Character for quoting @@ -374,6 +374,30 @@ federatedx_server_get_key(FEDERATEDX_SERVER *server, size_t *length, return server->key; } +#ifdef HAVE_PSI_INTERFACE +static PSI_mutex_key fe_key_mutex_federatedx, fe_key_mutex_FEDERATEDX_SERVER_mutex; + +static PSI_mutex_info all_federated_mutexes[]= +{ + { &fe_key_mutex_federatedx, "federatedx", PSI_FLAG_GLOBAL}, + { &fe_key_mutex_FEDERATEDX_SERVER_mutex, "FEDERATED_SERVER::mutex", 0} +}; + +static void init_federated_psi_keys(void) +{ + const char* category= "federated"; + int count; + + if (PSI_server == NULL) + return; + + count= array_elements(all_federated_mutexes); + PSI_server->register_mutex(category, all_federated_mutexes, count); +} +#else +#define init_federated_psi_keys() /* no-op */ +#endif /* HAVE_PSI_INTERFACE */ + /* Initialize the federatedx handler. @@ -390,6 +414,7 @@ federatedx_server_get_key(FEDERATEDX_SERVER *server, size_t *length, int federatedx_db_init(void *p) { DBUG_ENTER("federatedx_db_init"); + init_federated_psi_keys(); handlerton *federatedx_hton= (handlerton *)p; federatedx_hton->state= SHOW_OPTION_YES; /* Needed to work with old .frm files */ @@ -404,7 +429,8 @@ int federatedx_db_init(void *p) federatedx_hton->create= federatedx_create_handler; federatedx_hton->flags= HTON_ALTER_NOT_SUPPORTED | HTON_NO_PARTITION; - if (pthread_mutex_init(&federatedx_mutex, MY_MUTEX_INIT_FAST)) + if (mysql_mutex_init(fe_key_mutex_federatedx, + &federatedx_mutex, MY_MUTEX_INIT_FAST)) goto error; if (!my_hash_init(&federatedx_open_tables, &my_charset_bin, 32, 0, 0, (my_hash_get_key) federatedx_share_get_key, 0, 0) && @@ -414,7 +440,7 @@ int federatedx_db_init(void *p) DBUG_RETURN(FALSE); } - pthread_mutex_destroy(&federatedx_mutex); + mysql_mutex_destroy(&federatedx_mutex); error: DBUG_RETURN(TRUE); } @@ -434,7 +460,7 @@ int federatedx_done(void *p) { my_hash_free(&federatedx_open_tables); my_hash_free(&federatedx_open_servers); - pthread_mutex_destroy(&federatedx_mutex); + mysql_mutex_destroy(&federatedx_mutex); return 0; } @@ -1489,7 +1515,7 @@ static FEDERATEDX_SERVER *get_server(FEDERATEDX_SHARE *share, TABLE *table) String password(share->password ? share->password : "", &my_charset_bin); DBUG_ENTER("ha_federated.cc::get_server"); - safe_mutex_assert_owner(&federatedx_mutex); + mysql_mutex_assert_owner(&federatedx_mutex); init_alloc_root(&mem_root, 4096, 4096); @@ -1512,7 +1538,8 @@ static FEDERATEDX_SERVER *get_server(FEDERATEDX_SHARE *share, TABLE *table) if (my_hash_insert(&federatedx_open_servers, (uchar*) server)) goto error; - pthread_mutex_init(&server->mutex, MY_MUTEX_INIT_FAST); + mysql_mutex_init(fe_key_mutex_FEDERATEDX_SERVER_mutex, + &server->mutex, MY_MUTEX_INIT_FAST); } else free_root(&mem_root, MYF(0)); /* prevents memory leak */ @@ -1550,7 +1577,7 @@ static FEDERATEDX_SHARE *get_share(const char *table_name, TABLE *table) bzero(&tmp_share, sizeof(tmp_share)); init_alloc_root(&mem_root, 256, 0); - pthread_mutex_lock(&federatedx_mutex); + mysql_mutex_lock(&federatedx_mutex); tmp_share.share_key= table_name; tmp_share.share_key_length= strlen(table_name); @@ -1599,12 +1626,12 @@ static FEDERATEDX_SHARE *get_share(const char *table_name, TABLE *table) free_root(&mem_root, MYF(0)); /* prevents memory leak */ share->use_count++; - pthread_mutex_unlock(&federatedx_mutex); + mysql_mutex_unlock(&federatedx_mutex); DBUG_RETURN(share); error: - pthread_mutex_unlock(&federatedx_mutex); + mysql_mutex_unlock(&federatedx_mutex); free_root(&mem_root, MYF(0)); DBUG_RETURN(NULL); } @@ -1615,10 +1642,10 @@ static int free_server(federatedx_txn *txn, FEDERATEDX_SERVER *server) bool destroy; DBUG_ENTER("free_server"); - pthread_mutex_lock(&federatedx_mutex); + mysql_mutex_lock(&federatedx_mutex); if ((destroy= !--server->use_count)) my_hash_delete(&federatedx_open_servers, (uchar*) server); - pthread_mutex_unlock(&federatedx_mutex); + mysql_mutex_unlock(&federatedx_mutex); if (destroy) { @@ -1634,7 +1661,7 @@ static int free_server(federatedx_txn *txn, FEDERATEDX_SERVER *server) DBUG_ASSERT(server->io_count == 0); - pthread_mutex_destroy(&server->mutex); + mysql_mutex_destroy(&server->mutex); mem_root= server->mem_root; free_root(&mem_root, MYF(0)); } @@ -1654,10 +1681,10 @@ static int free_share(federatedx_txn *txn, FEDERATEDX_SHARE *share) bool destroy; DBUG_ENTER("free_share"); - pthread_mutex_lock(&federatedx_mutex); + mysql_mutex_lock(&federatedx_mutex); if ((destroy= !--share->use_count)) my_hash_delete(&federatedx_open_tables, (uchar*) share); - pthread_mutex_unlock(&federatedx_mutex); + mysql_mutex_unlock(&federatedx_mutex); if (destroy) { @@ -3350,9 +3377,9 @@ int ha_federatedx::create(const char *name, TABLE *table_arg, the remote server. To ensure that no new FEDERATEDX_SERVER instance is created, we pass NULL in get_server() TABLE arg. */ - pthread_mutex_lock(&federatedx_mutex); + mysql_mutex_lock(&federatedx_mutex); tmp_share.s= get_server(&tmp_share, NULL); - pthread_mutex_unlock(&federatedx_mutex); + mysql_mutex_unlock(&federatedx_mutex); if (tmp_share.s) { @@ -3379,8 +3406,9 @@ int ha_federatedx::create(const char *name, TABLE *table_arg, fill_server(thd->mem_root, &server, &tmp_share, create_info->table_charset); #ifndef DBUG_OFF - pthread_mutex_init(&server.mutex, MY_MUTEX_INIT_FAST); - pthread_mutex_lock(&server.mutex); + mysql_mutex_init(fe_key_mutex_FEDERATEDX_SERVER_mutex, + &server.mutex, MY_MUTEX_INIT_FAST); + mysql_mutex_lock(&server.mutex); #endif tmp_io= federatedx_io::construct(thd->mem_root, &server); @@ -3388,8 +3416,8 @@ int ha_federatedx::create(const char *name, TABLE *table_arg, retval= test_connection(thd, tmp_io, &tmp_share); #ifndef DBUG_OFF - pthread_mutex_unlock(&server.mutex); - pthread_mutex_destroy(&server.mutex); + mysql_mutex_unlock(&server.mutex); + mysql_mutex_destroy(&server.mutex); #endif delete tmp_io; diff --git a/storage/federatedx/ha_federatedx.h b/storage/federatedx/ha_federatedx.h index 93034ac0ad3..dc7733806ad 100644 --- a/storage/federatedx/ha_federatedx.h +++ b/storage/federatedx/ha_federatedx.h @@ -66,7 +66,7 @@ typedef struct st_fedrated_server { const char *csname; - pthread_mutex_t mutex; + mysql_mutex_t mutex; federatedx_io *idle_list; } FEDERATEDX_SERVER; |