From: Marc Alff Date: May 4 2011 5:02am Subject: bzr commit into mysql-trunk-pfs-tuning branch (marc.alff:3368) List-Archive: http://lists.mysql.com/commits/136607 Message-Id: <201105040502.p4452xkM028272@acsmt358.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0770659371425854874==" --===============0770659371425854874== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///Users/malff/BZR_TREE/mysql-trunk-pfs-tuning/ based on revid:marc.alff@stripped 3368 Marc Alff 2011-05-03 PERFORMANCE SCHEMA optimization Preparing for static calls to the instrumentation, with PSI_CALL. modified: include/mysql/psi/mysql_file.h include/mysql/psi/mysql_stage.h include/mysql/psi/mysql_statement.h include/mysql/psi/mysql_table.h include/mysql/psi/mysql_thread.h include/mysql/psi/psi.h storage/innobase/include/os0file.h storage/innobase/include/os0sync.ic storage/innobase/include/srv0srv.h storage/innobase/include/sync0rw.ic storage/innobase/include/sync0sync.ic === modified file 'include/mysql/psi/mysql_file.h' --- a/include/mysql/psi/mysql_file.h 2011-05-04 03:17:46 +0000 +++ b/include/mysql/psi/mysql_file.h 2011-05-04 05:02:43 +0000 @@ -518,7 +518,7 @@ static inline void inline_mysql_file_reg ) { #ifdef HAVE_PSI_FILE_INTERFACE - PSI_server->register_file(category, info, count); + PSI_CALL(register_file)(category, info, count); #endif } @@ -533,13 +533,13 @@ inline_mysql_file_fgets( #ifdef HAVE_PSI_FILE_INTERFACE struct PSI_file_locker *locker; PSI_file_locker_state state; - locker= PSI_server->get_thread_file_stream_locker(&state, file->m_psi, - PSI_FILE_READ); + locker= PSI_CALL(get_thread_file_stream_locker)(&state, file->m_psi, + PSI_FILE_READ); if (likely(locker != NULL)) { - PSI_server->start_file_wait(locker, (size_t) size, src_file, src_line); + PSI_CALL(start_file_wait)(locker, (size_t) size, src_file, src_line); result= fgets(str, size, file->m_file); - PSI_server->end_file_wait(locker, result ? strlen(result) : 0); + PSI_CALL(end_file_wait)(locker, result ? strlen(result) : 0); return result; } #endif @@ -559,13 +559,13 @@ inline_mysql_file_fgetc( #ifdef HAVE_PSI_FILE_INTERFACE struct PSI_file_locker *locker; PSI_file_locker_state state; - locker= PSI_server->get_thread_file_stream_locker(&state, file->m_psi, - PSI_FILE_READ); + locker= PSI_CALL(get_thread_file_stream_locker)(&state, file->m_psi, + PSI_FILE_READ); if (likely(locker != NULL)) { - PSI_server->start_file_wait(locker, (size_t) 1, src_file, src_line); + PSI_CALL(start_file_wait)(locker, (size_t) 1, src_file, src_line); result= fgetc(file->m_file); - PSI_server->end_file_wait(locker, (size_t) 1); + PSI_CALL(end_file_wait)(locker, (size_t) 1); return result; } #endif @@ -586,14 +586,14 @@ inline_mysql_file_fputs( struct PSI_file_locker *locker= NULL; PSI_file_locker_state state; size_t bytes; - locker= PSI_server->get_thread_file_stream_locker(&state, file->m_psi, - PSI_FILE_WRITE); + locker= PSI_CALL(get_thread_file_stream_locker)(&state, file->m_psi, + PSI_FILE_WRITE); if (likely(locker != NULL)) { bytes= str ? strlen(str) : 0; - PSI_server->start_file_wait(locker, bytes, src_file, src_line); + PSI_CALL(start_file_wait)(locker, bytes, src_file, src_line); result= fputs(str, file->m_file); - PSI_server->end_file_wait(locker, bytes); + PSI_CALL(end_file_wait)(locker, bytes); return result; } #endif @@ -613,13 +613,13 @@ inline_mysql_file_fputc( #ifdef HAVE_PSI_FILE_INTERFACE struct PSI_file_locker *locker; PSI_file_locker_state state; - locker= PSI_server->get_thread_file_stream_locker(&state, file->m_psi, - PSI_FILE_WRITE); + locker= PSI_CALL(get_thread_file_stream_locker)(&state, file->m_psi, + PSI_FILE_WRITE); if (likely(locker != NULL)) { - PSI_server->start_file_wait(locker, (size_t) 1, src_file, src_line); + PSI_CALL(start_file_wait)(locker, (size_t) 1, src_file, src_line); result= fputc(c, file->m_file); - PSI_server->end_file_wait(locker, (size_t) 1); + PSI_CALL(end_file_wait)(locker, (size_t) 1); return result; } #endif @@ -639,15 +639,15 @@ inline_mysql_file_fprintf(MYSQL_FILE *fi #ifdef HAVE_PSI_FILE_INTERFACE struct PSI_file_locker *locker; PSI_file_locker_state state; - locker= PSI_server->get_thread_file_stream_locker(&state, file->m_psi, - PSI_FILE_WRITE); + locker= PSI_CALL(get_thread_file_stream_locker)(&state, file->m_psi, + PSI_FILE_WRITE); if (likely(locker != NULL)) { - PSI_server->start_file_wait(locker, (size_t) 0, __FILE__, __LINE__); + PSI_CALL(start_file_wait)(locker, (size_t) 0, __FILE__, __LINE__); va_start(args, format); result= vfprintf(file->m_file, format, args); va_end(args); - PSI_server->end_file_wait(locker, (size_t) result); + PSI_CALL(end_file_wait)(locker, (size_t) result); return result; } #endif @@ -669,13 +669,13 @@ inline_mysql_file_vfprintf( #ifdef HAVE_PSI_FILE_INTERFACE struct PSI_file_locker *locker; PSI_file_locker_state state; - locker= PSI_server->get_thread_file_stream_locker(&state, file->m_psi, - PSI_FILE_WRITE); + locker= PSI_CALL(get_thread_file_stream_locker)(&state, file->m_psi, + PSI_FILE_WRITE); if (likely(locker != NULL)) { - PSI_server->start_file_wait(locker, (size_t) 0, src_file, src_line); + PSI_CALL(start_file_wait)(locker, (size_t) 0, src_file, src_line); result= vfprintf(file->m_file, format, args); - PSI_server->end_file_wait(locker, (size_t) result); + PSI_CALL(end_file_wait)(locker, (size_t) result); return result; } #endif @@ -695,13 +695,13 @@ inline_mysql_file_fflush( #ifdef HAVE_PSI_FILE_INTERFACE struct PSI_file_locker *locker; PSI_file_locker_state state; - locker= PSI_server->get_thread_file_stream_locker(&state, file->m_psi, - PSI_FILE_FLUSH); + locker= PSI_CALL(get_thread_file_stream_locker)(&state, file->m_psi, + PSI_FILE_FLUSH); if (likely(locker != NULL)) { - PSI_server->start_file_wait(locker, (size_t) 0, src_file, src_line); + PSI_CALL(start_file_wait)(locker, (size_t) 0, src_file, src_line); result= fflush(file->m_file); - PSI_server->end_file_wait(locker, (size_t) 0); + PSI_CALL(end_file_wait)(locker, (size_t) 0); return result; } #endif @@ -725,18 +725,20 @@ inline_mysql_file_fstat( { int result; #ifdef HAVE_PSI_FILE_INTERFACE - struct PSI_file_locker *locker= NULL; + struct PSI_file_locker *locker; PSI_file_locker_state state; - locker= PSI_server->get_thread_file_descriptor_locker(&state, filenr, - PSI_FILE_FSTAT); + locker= PSI_CALL(get_thread_file_descriptor_locker)(&state, filenr, + PSI_FILE_FSTAT); if (likely(locker != NULL)) - PSI_server->start_file_wait(locker, (size_t) 0, src_file, src_line); + { + PSI_CALL(start_file_wait)(locker, (size_t) 0, src_file, src_line); + result= my_fstat(filenr, stat_area, flags); + PSI_CALL(end_file_wait)(locker, (size_t) 0); + return result; + } #endif + result= my_fstat(filenr, stat_area, flags); -#ifdef HAVE_PSI_FILE_INTERFACE - if (likely(locker != NULL)) - PSI_server->end_file_wait(locker, (size_t) 0); -#endif return result; } @@ -749,19 +751,21 @@ inline_mysql_file_stat( { MY_STAT *result; #ifdef HAVE_PSI_FILE_INTERFACE - struct PSI_file_locker *locker= NULL; + struct PSI_file_locker *locker; PSI_file_locker_state state; - locker= PSI_server->get_thread_file_name_locker(&state, - key, PSI_FILE_STAT, - path, &locker); + locker= PSI_CALL(get_thread_file_name_locker)(&state, + key, PSI_FILE_STAT, + path, &locker); if (likely(locker != NULL)) - PSI_server->start_file_open_wait(locker, src_file, src_line); + { + PSI_CALL(start_file_open_wait)(locker, src_file, src_line); + result= my_stat(path, stat_area, flags); + PSI_CALL(end_file_wait)(locker, (size_t) 0); + return result; + } #endif + result= my_stat(path, stat_area, flags); -#ifdef HAVE_PSI_FILE_INTERFACE - if (likely(locker != NULL)) - PSI_server->end_file_wait(locker, (size_t) 0); -#endif return result; } @@ -774,19 +778,21 @@ inline_mysql_file_chsize( { int result; #ifdef HAVE_PSI_FILE_INTERFACE - struct PSI_file_locker *locker= NULL; + struct PSI_file_locker *locker; PSI_file_locker_state state; - locker= PSI_server->get_thread_file_descriptor_locker(&state, file, - PSI_FILE_CHSIZE); + locker= PSI_CALL(get_thread_file_descriptor_locker)(&state, file, + PSI_FILE_CHSIZE); if (likely(locker != NULL)) - PSI_server->start_file_wait(locker, (size_t) newlength, src_file, - src_line); + { + PSI_CALL(start_file_wait)(locker, (size_t) newlength, src_file, + src_line); + result= my_chsize(file, newlength, filler, flags); + PSI_CALL(end_file_wait)(locker, (size_t) newlength); + return result; + } #endif + result= my_chsize(file, newlength, filler, flags); -#ifdef HAVE_PSI_FILE_INTERFACE - if (likely(locker != NULL)) - PSI_server->end_file_wait(locker, (size_t) newlength); -#endif return result; } @@ -802,16 +808,16 @@ inline_mysql_file_fopen( if (likely(that != NULL)) { #ifdef HAVE_PSI_FILE_INTERFACE - struct PSI_file_locker *locker= NULL; + struct PSI_file_locker *locker; PSI_file_locker_state state; - locker= PSI_server->get_thread_file_name_locker + locker= PSI_CALL(get_thread_file_name_locker) (&state, key, PSI_FILE_STREAM_OPEN, filename, that); if (likely(locker != NULL)) { - that->m_psi= PSI_server->start_file_open_wait(locker, src_file, - src_line); + that->m_psi= PSI_CALL(start_file_open_wait)(locker, src_file, + src_line); that->m_file= my_fopen(filename, flags, myFlags); - PSI_server->end_file_open_wait(locker); + PSI_CALL(end_file_open_wait)(locker); if (unlikely(that->m_file == NULL)) { @@ -846,13 +852,13 @@ inline_mysql_file_fclose( #ifdef HAVE_PSI_FILE_INTERFACE struct PSI_file_locker *locker; PSI_file_locker_state state; - locker= PSI_server->get_thread_file_stream_locker(&state, file->m_psi, - PSI_FILE_STREAM_CLOSE); + locker= PSI_CALL(get_thread_file_stream_locker)(&state, file->m_psi, + PSI_FILE_STREAM_CLOSE); if (likely(locker != NULL)) { - PSI_server->start_file_wait(locker, (size_t) 0, src_file, src_line); + PSI_CALL(start_file_wait)(locker, (size_t) 0, src_file, src_line); result= my_fclose(file->m_file, flags); - PSI_server->end_file_wait(locker, (size_t) 0); + PSI_CALL(end_file_wait)(locker, (size_t) 0); my_free(file); return result; } @@ -876,17 +882,17 @@ inline_mysql_file_fread( struct PSI_file_locker *locker; PSI_file_locker_state state; size_t bytes_read; - locker= PSI_server->get_thread_file_stream_locker(&state, file->m_psi, - PSI_FILE_READ); + locker= PSI_CALL(get_thread_file_stream_locker)(&state, file->m_psi, + PSI_FILE_READ); if (likely(locker != NULL)) { - PSI_server->start_file_wait(locker, count, src_file, src_line); + PSI_CALL(start_file_wait)(locker, count, src_file, src_line); result= my_fread(file->m_file, buffer, count, flags); if (flags & (MY_NABP | MY_FNABP)) bytes_read= (result == 0) ? count : 0; else bytes_read= (result != MY_FILE_ERROR) ? result : 0; - PSI_server->end_file_wait(locker, bytes_read); + PSI_CALL(end_file_wait)(locker, bytes_read); return result; } #endif @@ -907,17 +913,17 @@ inline_mysql_file_fwrite( struct PSI_file_locker *locker; PSI_file_locker_state state; size_t bytes_written; - locker= PSI_server->get_thread_file_stream_locker(&state, file->m_psi, - PSI_FILE_WRITE); + locker= PSI_CALL(get_thread_file_stream_locker)(&state, file->m_psi, + PSI_FILE_WRITE); if (likely(locker != NULL)) { - PSI_server->start_file_wait(locker, count, src_file, src_line); + PSI_CALL(start_file_wait)(locker, count, src_file, src_line); result= my_fwrite(file->m_file, buffer, count, flags); if (flags & (MY_NABP | MY_FNABP)) bytes_written= (result == 0) ? count : 0; else bytes_written= (result != MY_FILE_ERROR) ? result : 0; - PSI_server->end_file_wait(locker, bytes_written); + PSI_CALL(end_file_wait)(locker, bytes_written); return result; } #endif @@ -937,13 +943,13 @@ inline_mysql_file_fseek( #ifdef HAVE_PSI_FILE_INTERFACE struct PSI_file_locker *locker; PSI_file_locker_state state; - locker= PSI_server->get_thread_file_stream_locker(&state, file->m_psi, - PSI_FILE_SEEK); + locker= PSI_CALL(get_thread_file_stream_locker)(&state, file->m_psi, + PSI_FILE_SEEK); if (likely(locker != NULL)) { - PSI_server->start_file_wait(locker, (size_t) 0, src_file, src_line); + PSI_CALL(start_file_wait)(locker, (size_t) 0, src_file, src_line); result= my_fseek(file->m_file, pos, whence, flags); - PSI_server->end_file_wait(locker, (size_t) 0); + PSI_CALL(end_file_wait)(locker, (size_t) 0); return result; } #endif @@ -963,13 +969,13 @@ inline_mysql_file_ftell( #ifdef HAVE_PSI_FILE_INTERFACE struct PSI_file_locker *locker; PSI_file_locker_state state; - locker= PSI_server->get_thread_file_stream_locker(&state, file->m_psi, - PSI_FILE_TELL); + locker= PSI_CALL(get_thread_file_stream_locker)(&state, file->m_psi, + PSI_FILE_TELL); if (likely(locker != NULL)) { - PSI_server->start_file_wait(locker, (size_t) 0, src_file, src_line); + PSI_CALL(start_file_wait)(locker, (size_t) 0, src_file, src_line); result= my_ftell(file->m_file, flags); - PSI_server->end_file_wait(locker, (size_t) 0); + PSI_CALL(end_file_wait)(locker, (size_t) 0); return result; } #endif @@ -987,18 +993,20 @@ inline_mysql_file_create( { File file; #ifdef HAVE_PSI_FILE_INTERFACE - struct PSI_file_locker *locker= NULL; + struct PSI_file_locker *locker; PSI_file_locker_state state; - locker= PSI_server->get_thread_file_name_locker(&state, key, PSI_FILE_CREATE, - filename, &locker); + locker= PSI_CALL(get_thread_file_name_locker)(&state, key, PSI_FILE_CREATE, + filename, &locker); if (likely(locker != NULL)) - PSI_server->start_file_open_wait(locker, src_file, src_line); + { + PSI_CALL(start_file_open_wait)(locker, src_file, src_line); + file= my_create(filename, create_flags, access_flags, myFlags); + PSI_CALL(end_file_open_wait_and_bind_to_descriptor)(locker, file); + return file; + } #endif + file= my_create(filename, create_flags, access_flags, myFlags); -#ifdef HAVE_PSI_FILE_INTERFACE - if (likely(locker != NULL)) - PSI_server->end_file_open_wait_and_bind_to_descriptor(locker, file); -#endif return file; } @@ -1017,7 +1025,7 @@ inline_mysql_file_create_temp( */ file= create_temp_file(to, dir, pfx, mode, myFlags); #ifdef HAVE_PSI_FILE_INTERFACE - PSI_server->create_file(key, to, file); + PSI_CALL(create_file)(key, to, file); #endif return file; } @@ -1031,18 +1039,20 @@ inline_mysql_file_open( { File file; #ifdef HAVE_PSI_FILE_INTERFACE - struct PSI_file_locker *locker= NULL; + struct PSI_file_locker *locker; PSI_file_locker_state state; - locker= PSI_server->get_thread_file_name_locker(&state, key, PSI_FILE_OPEN, - filename, &locker); + locker= PSI_CALL(get_thread_file_name_locker)(&state, key, PSI_FILE_OPEN, + filename, &locker); if (likely(locker != NULL)) - PSI_server->start_file_open_wait(locker, src_file, src_line); + { + PSI_CALL(start_file_open_wait)(locker, src_file, src_line); + file= my_open(filename, flags, myFlags); + PSI_CALL(end_file_open_wait_and_bind_to_descriptor)(locker, file); + return file; + } #endif + file= my_open(filename, flags, myFlags); -#ifdef HAVE_PSI_FILE_INTERFACE - if (likely(locker != NULL)) - PSI_server->end_file_open_wait_and_bind_to_descriptor(locker, file); -#endif return file; } @@ -1055,18 +1065,20 @@ inline_mysql_file_close( { int result; #ifdef HAVE_PSI_FILE_INTERFACE - struct PSI_file_locker *locker= NULL; + struct PSI_file_locker *locker; PSI_file_locker_state state; - locker= PSI_server->get_thread_file_descriptor_locker(&state, file, - PSI_FILE_CLOSE); + locker= PSI_CALL(get_thread_file_descriptor_locker)(&state, file, + PSI_FILE_CLOSE); if (likely(locker != NULL)) - PSI_server->start_file_wait(locker, (size_t) 0, src_file, src_line); + { + PSI_CALL(start_file_wait)(locker, (size_t) 0, src_file, src_line); + result= my_close(file, flags); + PSI_CALL(end_file_wait)(locker, (size_t) 0); + return result; + } #endif + result= my_close(file, flags); -#ifdef HAVE_PSI_FILE_INTERFACE - if (likely(locker != NULL)) - PSI_server->end_file_wait(locker, (size_t) 0); -#endif return result; } @@ -1077,27 +1089,27 @@ inline_mysql_file_read( #endif File file, uchar *buffer, size_t count, myf flags) { - size_t result= 0; + size_t result; #ifdef HAVE_PSI_FILE_INTERFACE - struct PSI_file_locker *locker= NULL; + struct PSI_file_locker *locker; PSI_file_locker_state state; - locker= PSI_server->get_thread_file_descriptor_locker(&state, file, - PSI_FILE_READ); - if (likely(locker != NULL)) - PSI_server->start_file_wait(locker, count, src_file, src_line); -#endif - result= my_read(file, buffer, count, flags); -#ifdef HAVE_PSI_FILE_INTERFACE + size_t bytes_read; + locker= PSI_CALL(get_thread_file_descriptor_locker)(&state, file, + PSI_FILE_READ); if (likely(locker != NULL)) { - size_t bytes_read; + PSI_CALL(start_file_wait)(locker, count, src_file, src_line); + result= my_read(file, buffer, count, flags); if (flags & (MY_NABP | MY_FNABP)) bytes_read= (result == 0) ? count : 0; else bytes_read= (result != MY_FILE_ERROR) ? result : 0; - PSI_server->end_file_wait(locker, bytes_read); + PSI_CALL(end_file_wait)(locker, bytes_read); + return result; } #endif + + result= my_read(file, buffer, count, flags); return result; } @@ -1110,25 +1122,25 @@ inline_mysql_file_write( { size_t result; #ifdef HAVE_PSI_FILE_INTERFACE - struct PSI_file_locker *locker= NULL; + struct PSI_file_locker *locker; PSI_file_locker_state state; - locker= PSI_server->get_thread_file_descriptor_locker(&state, file, - PSI_FILE_WRITE); - if (likely(locker != NULL)) - PSI_server->start_file_wait(locker, count, src_file, src_line); -#endif - result= my_write(file, buffer, count, flags); -#ifdef HAVE_PSI_FILE_INTERFACE + size_t bytes_written; + locker= PSI_CALL(get_thread_file_descriptor_locker)(&state, file, + PSI_FILE_WRITE); if (likely(locker != NULL)) { - size_t bytes_written; + PSI_CALL(start_file_wait)(locker, count, src_file, src_line); + result= my_write(file, buffer, count, flags); if (flags & (MY_NABP | MY_FNABP)) bytes_written= (result == 0) ? count : 0; else bytes_written= (result != MY_FILE_ERROR) ? result : 0; - PSI_server->end_file_wait(locker, bytes_written); + PSI_CALL(end_file_wait)(locker, bytes_written); + return result; } #endif + + result= my_write(file, buffer, count, flags); return result; } @@ -1141,24 +1153,24 @@ inline_mysql_file_pread( { size_t result; #ifdef HAVE_PSI_FILE_INTERFACE - struct PSI_file_locker *locker= NULL; + struct PSI_file_locker *locker; PSI_file_locker_state state; - locker= PSI_server->get_thread_file_descriptor_locker(&state, file, PSI_FILE_READ); - if (likely(locker != NULL)) - PSI_server->start_file_wait(locker, count, src_file, src_line); -#endif - result= my_pread(file, buffer, count, offset, flags); -#ifdef HAVE_PSI_FILE_INTERFACE + size_t bytes_read; + locker= PSI_CALL(get_thread_file_descriptor_locker)(&state, file, PSI_FILE_READ); if (likely(locker != NULL)) { - size_t bytes_read; + PSI_CALL(start_file_wait)(locker, count, src_file, src_line); + result= my_pread(file, buffer, count, offset, flags); if (flags & (MY_NABP | MY_FNABP)) bytes_read= (result == 0) ? count : 0; else bytes_read= (result != MY_FILE_ERROR) ? result : 0; - PSI_server->end_file_wait(locker, bytes_read); + PSI_CALL(end_file_wait)(locker, bytes_read); + return result; } #endif + + result= my_pread(file, buffer, count, offset, flags); return result; } @@ -1171,25 +1183,25 @@ inline_mysql_file_pwrite( { size_t result; #ifdef HAVE_PSI_FILE_INTERFACE - struct PSI_file_locker *locker= NULL; + struct PSI_file_locker *locker; PSI_file_locker_state state; - locker= PSI_server->get_thread_file_descriptor_locker(&state, file, - PSI_FILE_WRITE); - if (likely(locker != NULL)) - PSI_server->start_file_wait(locker, count, src_file, src_line); -#endif - result= my_pwrite(file, buffer, count, offset, flags); -#ifdef HAVE_PSI_FILE_INTERFACE + size_t bytes_written; + locker= PSI_CALL(get_thread_file_descriptor_locker)(&state, file, + PSI_FILE_WRITE); if (likely(locker != NULL)) { - size_t bytes_written; + PSI_CALL(start_file_wait)(locker, count, src_file, src_line); + result= my_pwrite(file, buffer, count, offset, flags); if (flags & (MY_NABP | MY_FNABP)) bytes_written= (result == 0) ? count : 0; else bytes_written= (result != MY_FILE_ERROR) ? result : 0; - PSI_server->end_file_wait(locker, bytes_written); + PSI_CALL(end_file_wait)(locker, bytes_written); + return result; } #endif + + result= my_pwrite(file, buffer, count, offset, flags); return result; } @@ -1202,17 +1214,19 @@ inline_mysql_file_seek( { my_off_t result; #ifdef HAVE_PSI_FILE_INTERFACE - struct PSI_file_locker *locker= NULL; + struct PSI_file_locker *locker; PSI_file_locker_state state; - locker= PSI_server->get_thread_file_descriptor_locker(&state, file, PSI_FILE_SEEK); + locker= PSI_CALL(get_thread_file_descriptor_locker)(&state, file, PSI_FILE_SEEK); if (likely(locker != NULL)) - PSI_server->start_file_wait(locker, (size_t) 0, src_file, src_line); + { + PSI_CALL(start_file_wait)(locker, (size_t) 0, src_file, src_line); + result= my_seek(file, pos, whence, flags); + PSI_CALL(end_file_wait)(locker, (size_t) 0); + return result; + } #endif + result= my_seek(file, pos, whence, flags); -#ifdef HAVE_PSI_FILE_INTERFACE - if (likely(locker != NULL)) - PSI_server->end_file_wait(locker, (size_t) 0); -#endif return result; } @@ -1225,17 +1239,19 @@ inline_mysql_file_tell( { my_off_t result; #ifdef HAVE_PSI_FILE_INTERFACE - struct PSI_file_locker *locker= NULL; + struct PSI_file_locker *locker; PSI_file_locker_state state; - locker= PSI_server->get_thread_file_descriptor_locker(&state, file, PSI_FILE_TELL); + locker= PSI_CALL(get_thread_file_descriptor_locker)(&state, file, PSI_FILE_TELL); if (likely(locker != NULL)) - PSI_server->start_file_wait(locker, (size_t) 0, src_file, src_line); + { + PSI_CALL(start_file_wait)(locker, (size_t) 0, src_file, src_line); + result= my_tell(file, flags); + PSI_CALL(end_file_wait)(locker, (size_t) 0); + return result; + } #endif + result= my_tell(file, flags); -#ifdef HAVE_PSI_FILE_INTERFACE - if (likely(locker != NULL)) - PSI_server->end_file_wait(locker, (size_t) 0); -#endif return result; } @@ -1248,18 +1264,20 @@ inline_mysql_file_delete( { int result; #ifdef HAVE_PSI_FILE_INTERFACE - struct PSI_file_locker *locker= NULL; + struct PSI_file_locker *locker; PSI_file_locker_state state; - locker= PSI_server->get_thread_file_name_locker(&state, key, PSI_FILE_DELETE, - name, &locker); + locker= PSI_CALL(get_thread_file_name_locker)(&state, key, PSI_FILE_DELETE, + name, &locker); if (likely(locker != NULL)) - PSI_server->start_file_wait(locker, (size_t) 0, src_file, src_line); + { + PSI_CALL(start_file_wait)(locker, (size_t) 0, src_file, src_line); + result= my_delete(name, flags); + PSI_CALL(end_file_wait)(locker, (size_t) 0); + return result; + } #endif + result= my_delete(name, flags); -#ifdef HAVE_PSI_FILE_INTERFACE - if (likely(locker != NULL)) - PSI_server->end_file_wait(locker, (size_t) 0); -#endif return result; } @@ -1272,18 +1290,20 @@ inline_mysql_file_rename( { int result; #ifdef HAVE_PSI_FILE_INTERFACE - struct PSI_file_locker *locker= NULL; + struct PSI_file_locker *locker; PSI_file_locker_state state; - locker= PSI_server->get_thread_file_name_locker(&state, key, PSI_FILE_RENAME, - to, &locker); + locker= PSI_CALL(get_thread_file_name_locker)(&state, key, PSI_FILE_RENAME, + to, &locker); if (likely(locker != NULL)) - PSI_server->start_file_wait(locker, (size_t) 0, src_file, src_line); + { + PSI_CALL(start_file_wait)(locker, (size_t) 0, src_file, src_line); + result= my_rename(from, to, flags); + PSI_CALL(end_file_wait)(locker, (size_t) 0); + return result; + } #endif + result= my_rename(from, to, flags); -#ifdef HAVE_PSI_FILE_INTERFACE - if (likely(locker != NULL)) - PSI_server->end_file_wait(locker, (size_t) 0); -#endif return result; } @@ -1297,19 +1317,22 @@ inline_mysql_file_create_with_symlink( { File file; #ifdef HAVE_PSI_FILE_INTERFACE - struct PSI_file_locker *locker= NULL; + struct PSI_file_locker *locker; PSI_file_locker_state state; - locker= PSI_server->get_thread_file_name_locker(&state, key, PSI_FILE_CREATE, - filename, &locker); + locker= PSI_CALL(get_thread_file_name_locker)(&state, key, PSI_FILE_CREATE, + filename, &locker); if (likely(locker != NULL)) - PSI_server->start_file_open_wait(locker, src_file, src_line); + { + PSI_CALL(start_file_open_wait)(locker, src_file, src_line); + file= my_create_with_symlink(linkname, filename, create_flags, access_flags, + flags); + PSI_CALL(end_file_open_wait_and_bind_to_descriptor)(locker, file); + return file; + } #endif + file= my_create_with_symlink(linkname, filename, create_flags, access_flags, flags); -#ifdef HAVE_PSI_FILE_INTERFACE - if (likely(locker != NULL)) - PSI_server->end_file_open_wait_and_bind_to_descriptor(locker, file); -#endif return file; } @@ -1322,18 +1345,20 @@ inline_mysql_file_delete_with_symlink( { int result; #ifdef HAVE_PSI_FILE_INTERFACE - struct PSI_file_locker *locker= NULL; + struct PSI_file_locker *locker; PSI_file_locker_state state; - locker= PSI_server->get_thread_file_name_locker(&state, key, PSI_FILE_DELETE, - name, &locker); + locker= PSI_CALL(get_thread_file_name_locker)(&state, key, PSI_FILE_DELETE, + name, &locker); if (likely(locker != NULL)) - PSI_server->start_file_wait(locker, (size_t) 0, src_file, src_line); + { + PSI_CALL(start_file_wait)(locker, (size_t) 0, src_file, src_line); + result= my_delete_with_symlink(name, flags); + PSI_CALL(end_file_wait)(locker, (size_t) 0); + return result; + } #endif + result= my_delete_with_symlink(name, flags); -#ifdef HAVE_PSI_FILE_INTERFACE - if (likely(locker != NULL)) - PSI_server->end_file_wait(locker, (size_t) 0); -#endif return result; } @@ -1346,18 +1371,20 @@ inline_mysql_file_rename_with_symlink( { int result; #ifdef HAVE_PSI_FILE_INTERFACE - struct PSI_file_locker *locker= NULL; + struct PSI_file_locker *locker; PSI_file_locker_state state; - locker= PSI_server->get_thread_file_name_locker(&state, key, PSI_FILE_RENAME, - to, &locker); + locker= PSI_CALL(get_thread_file_name_locker)(&state, key, PSI_FILE_RENAME, + to, &locker); if (likely(locker != NULL)) - PSI_server->start_file_wait(locker, (size_t) 0, src_file, src_line); + { + PSI_CALL(start_file_wait)(locker, (size_t) 0, src_file, src_line); + result= my_rename_with_symlink(from, to, flags); + PSI_CALL(end_file_wait)(locker, (size_t) 0); + return result; + } #endif + result= my_rename_with_symlink(from, to, flags); -#ifdef HAVE_PSI_FILE_INTERFACE - if (likely(locker != NULL)) - PSI_server->end_file_wait(locker, (size_t) 0); -#endif return result; } @@ -1370,17 +1397,19 @@ inline_mysql_file_sync( { int result= 0; #ifdef HAVE_PSI_FILE_INTERFACE - struct PSI_file_locker *locker= NULL; + struct PSI_file_locker *locker; PSI_file_locker_state state; - locker= PSI_server->get_thread_file_descriptor_locker(&state, fd, PSI_FILE_SYNC); + locker= PSI_CALL(get_thread_file_descriptor_locker)(&state, fd, PSI_FILE_SYNC); if (likely(locker != NULL)) - PSI_server->start_file_wait(locker, (size_t) 0, src_file, src_line); + { + PSI_CALL(start_file_wait)(locker, (size_t) 0, src_file, src_line); + result= my_sync(fd, flags); + PSI_CALL(end_file_wait)(locker, (size_t) 0); + return result; + } #endif + result= my_sync(fd, flags); -#ifdef HAVE_PSI_FILE_INTERFACE - if (likely(locker != NULL)) - PSI_server->end_file_wait(locker, (size_t) 0); -#endif return result; } === modified file 'include/mysql/psi/mysql_stage.h' --- a/include/mysql/psi/mysql_stage.h 2011-05-03 23:49:32 +0000 +++ b/include/mysql/psi/mysql_stage.h 2011-05-04 05:02:43 +0000 @@ -53,7 +53,7 @@ static inline void inline_mysql_stage_register( const char *category, PSI_stage_info **info, int count) { - PSI_server->register_stage(category, info, count); + PSI_CALL(register_stage)(category, info, count); } #endif @@ -62,7 +62,7 @@ static inline void inline_mysql_set_stage(PSI_stage_key key, const char *src_file, int src_line) { - PSI_server->start_stage(key, src_file, src_line); + PSI_CALL(start_stage)(key, src_file, src_line); } #endif === modified file 'include/mysql/psi/mysql_statement.h' --- a/include/mysql/psi/mysql_statement.h 2011-05-03 23:49:32 +0000 +++ b/include/mysql/psi/mysql_statement.h 2011-05-04 05:02:43 +0000 @@ -101,7 +101,7 @@ static inline void inline_mysql_statement_register( const char *category, PSI_statement_info *info, int count) { - PSI_server->register_statement(category, info, count); + PSI_CALL(register_statement)(category, info, count); } static inline struct PSI_statement_locker * @@ -111,9 +111,9 @@ inline_mysql_start_statement(PSI_stateme const char *src_file, int src_line) { PSI_statement_locker *locker= NULL; - locker= PSI_server->get_thread_statement_locker(state, key); + locker= PSI_CALL(get_thread_statement_locker)(state, key); if (likely(locker != NULL)) - PSI_server->start_statement(locker, db, db_len, src_file, src_line); + PSI_CALL(start_statement)(locker, db, db_len, src_file, src_line); return locker; } @@ -123,7 +123,7 @@ inline_mysql_refine_statement(PSI_statem { if (likely(locker != NULL)) { - locker= PSI_server->refine_statement(locker, key); + locker= PSI_CALL(refine_statement)(locker, key); } return locker; } @@ -134,7 +134,7 @@ inline_mysql_set_statement_text(PSI_stat { if (likely(locker != NULL)) { - PSI_server->set_statement_text(locker, text, text_len); + PSI_CALL(set_statement_text)(locker, text, text_len); } } @@ -144,7 +144,7 @@ inline_mysql_set_statement_lock_time(PSI { if (likely(locker != NULL)) { - PSI_server->set_statement_lock_time(locker, count); + PSI_CALL(set_statement_lock_time)(locker, count); } } @@ -154,7 +154,7 @@ inline_mysql_set_statement_rows_sent(PSI { if (likely(locker != NULL)) { - PSI_server->set_statement_rows_sent(locker, count); + PSI_CALL(set_statement_rows_sent)(locker, count); } } @@ -164,7 +164,7 @@ inline_mysql_set_statement_rows_examined { if (likely(locker != NULL)) { - PSI_server->set_statement_rows_examined(locker, count); + PSI_CALL(set_statement_rows_examined)(locker, count); } } @@ -172,9 +172,9 @@ static inline void inline_mysql_end_statement(struct PSI_statement_locker *locker, Diagnostics_area *stmt_da) { - PSI_server->end_stage(); + PSI_CALL(end_stage)(); if (likely(locker != NULL)) - PSI_server->end_statement(locker, stmt_da); + PSI_CALL(end_statement)(locker, stmt_da); } #endif === modified file 'include/mysql/psi/mysql_table.h' --- a/include/mysql/psi/mysql_table.h 2011-05-04 03:17:46 +0000 +++ b/include/mysql/psi/mysql_table.h 2011-05-04 05:02:43 +0000 @@ -98,9 +98,9 @@ inline_mysql_start_table_io_wait(PSI_tab const char *src_file, int src_line) { struct PSI_table_locker *locker; - locker= PSI_server->get_thread_table_io_locker(state, psi, op, index); + locker= PSI_CALL(get_thread_table_io_locker)(state, psi, op, index); if (likely(locker != NULL)) - PSI_server->start_table_io_wait(locker, src_file, src_line); + PSI_CALL(start_table_io_wait)(locker, src_file, src_line); return locker; } @@ -112,7 +112,7 @@ static inline void inline_mysql_end_table_io_wait(struct PSI_table_locker *locker) { if (likely(locker != NULL)) - PSI_server->end_table_io_wait(locker); + PSI_CALL(end_table_io_wait)(locker); } #endif @@ -163,9 +163,9 @@ inline_mysql_start_table_lock_wait(PSI_t ulong flags, const char *src_file, int src_line) { struct PSI_table_locker *locker; - locker= PSI_server->get_thread_table_lock_locker(state, psi, op, flags); + locker= PSI_CALL(get_thread_table_lock_locker)(state, psi, op, flags); if (likely(locker != NULL)) - PSI_server->start_table_lock_wait(locker, src_file, src_line); + PSI_CALL(start_table_lock_wait)(locker, src_file, src_line); return locker; } @@ -177,7 +177,7 @@ static inline void inline_mysql_end_table_lock_wait(struct PSI_table_locker *locker) { if (likely(locker != NULL)) - PSI_server->end_table_lock_wait(locker); + PSI_CALL(end_table_lock_wait)(locker); } #endif === modified file 'include/mysql/psi/mysql_thread.h' --- a/include/mysql/psi/mysql_thread.h 2011-05-04 03:17:46 +0000 +++ b/include/mysql/psi/mysql_thread.h 2011-05-04 05:02:43 +0000 @@ -588,7 +588,7 @@ static inline void inline_mysql_mutex_re ) { #ifdef HAVE_PSI_MUTEX_INTERFACE - PSI_server->register_mutex(category, info, count); + PSI_CALL(register_mutex)(category, info, count); #endif } @@ -604,7 +604,7 @@ static inline int inline_mysql_mutex_ini ) { #ifdef HAVE_PSI_MUTEX_INTERFACE - that->m_psi= PSI_server->init_mutex(key, &that->m_mutex); + that->m_psi= PSI_CALL(init_mutex)(key, &that->m_mutex); #else that->m_psi= NULL; #endif @@ -623,7 +623,7 @@ static inline int inline_mysql_mutex_des ) { #ifdef HAVE_PSI_MUTEX_INTERFACE - PSI_server->destroy_mutex(that->m_psi); + PSI_CALL(destroy_mutex)(that->m_psi); that->m_psi= NULL; #endif #ifdef SAFE_MUTEX @@ -644,16 +644,16 @@ static inline int inline_mysql_mutex_loc #ifdef HAVE_PSI_MUTEX_INTERFACE struct PSI_mutex_locker *locker; PSI_mutex_locker_state state; - locker= PSI_server->get_thread_mutex_locker(&state, that->m_psi, PSI_MUTEX_LOCK); + locker= PSI_CALL(get_thread_mutex_locker)(&state, that->m_psi, PSI_MUTEX_LOCK); if (likely(locker != NULL)) { - PSI_server->start_mutex_wait(locker, src_file, src_line); + PSI_CALL(start_mutex_wait)(locker, src_file, src_line); #ifdef SAFE_MUTEX result= safe_mutex_lock(&that->m_mutex, FALSE, src_file, src_line); #else result= pthread_mutex_lock(&that->m_mutex); #endif - PSI_server->end_mutex_wait(locker, result); + PSI_CALL(end_mutex_wait)(locker, result); return result; } #endif @@ -677,16 +677,16 @@ static inline int inline_mysql_mutex_try #ifdef HAVE_PSI_MUTEX_INTERFACE struct PSI_mutex_locker *locker; PSI_mutex_locker_state state; - locker= PSI_server->get_thread_mutex_locker(&state, that->m_psi, PSI_MUTEX_TRYLOCK); + locker= PSI_CALL(get_thread_mutex_locker)(&state, that->m_psi, PSI_MUTEX_TRYLOCK); if (likely(locker != NULL)) { - PSI_server->start_mutex_wait(locker, src_file, src_line); + PSI_CALL(start_mutex_wait)(locker, src_file, src_line); #ifdef SAFE_MUTEX result= safe_mutex_lock(&that->m_mutex, TRUE, src_file, src_line); #else result= pthread_mutex_trylock(&that->m_mutex); #endif - PSI_server->end_mutex_wait(locker, result); + PSI_CALL(end_mutex_wait)(locker, result); return result; } #endif @@ -708,7 +708,7 @@ static inline int inline_mysql_mutex_unl { int result; #ifdef HAVE_PSI_MUTEX_INTERFACE - PSI_server->unlock_mutex(that->m_psi); + PSI_CALL(unlock_mutex)(that->m_psi); #endif #ifdef SAFE_MUTEX result= safe_mutex_unlock(&that->m_mutex, src_file, src_line); @@ -731,7 +731,7 @@ static inline void inline_mysql_rwlock_r ) { #ifdef HAVE_PSI_RWLOCK_INTERFACE - PSI_server->register_rwlock(category, info, count); + PSI_CALL(register_rwlock)(category, info, count); #endif } @@ -742,7 +742,7 @@ static inline int inline_mysql_rwlock_in mysql_rwlock_t *that) { #ifdef HAVE_PSI_RWLOCK_INTERFACE - that->m_psi= PSI_server->init_rwlock(key, &that->m_rwlock); + that->m_psi= PSI_CALL(init_rwlock)(key, &that->m_rwlock); #else that->m_psi= NULL; #endif @@ -760,7 +760,7 @@ static inline int inline_mysql_prlock_in mysql_prlock_t *that) { #ifdef HAVE_PSI_RWLOCK_INTERFACE - that->m_psi= PSI_server->init_rwlock(key, &that->m_prlock); + that->m_psi= PSI_CALL(init_rwlock)(key, &that->m_prlock); #else that->m_psi= NULL; #endif @@ -772,7 +772,7 @@ static inline int inline_mysql_rwlock_de mysql_rwlock_t *that) { #ifdef HAVE_PSI_RWLOCK_INTERFACE - PSI_server->destroy_rwlock(that->m_psi); + PSI_CALL(destroy_rwlock)(that->m_psi); that->m_psi= NULL; #endif return rwlock_destroy(&that->m_rwlock); @@ -783,7 +783,7 @@ static inline int inline_mysql_prlock_de mysql_prlock_t *that) { #ifdef HAVE_PSI_RWLOCK_INTERFACE - PSI_server->destroy_rwlock(that->m_psi); + PSI_CALL(destroy_rwlock)(that->m_psi); that->m_psi= NULL; #endif return rw_pr_destroy(&that->m_prlock); @@ -801,13 +801,13 @@ static inline int inline_mysql_rwlock_rd #ifdef HAVE_PSI_RWLOCK_INTERFACE struct PSI_rwlock_locker *locker; PSI_rwlock_locker_state state; - locker= PSI_server->get_thread_rwlock_locker(&state, that->m_psi, - PSI_RWLOCK_READLOCK); + locker= PSI_CALL(get_thread_rwlock_locker)(&state, that->m_psi, + PSI_RWLOCK_READLOCK); if (likely(locker != NULL)) { - PSI_server->start_rwlock_rdwait(locker, src_file, src_line); + PSI_CALL(start_rwlock_rdwait)(locker, src_file, src_line); result= rw_rdlock(&that->m_rwlock); - PSI_server->end_rwlock_rdwait(locker, result); + PSI_CALL(end_rwlock_rdwait)(locker, result); return result; } #endif @@ -828,13 +828,13 @@ static inline int inline_mysql_prlock_rd #ifdef HAVE_PSI_RWLOCK_INTERFACE struct PSI_rwlock_locker *locker; PSI_rwlock_locker_state state; - locker= PSI_server->get_thread_rwlock_locker(&state, that->m_psi, - PSI_RWLOCK_READLOCK); + locker= PSI_CALL(get_thread_rwlock_locker)(&state, that->m_psi, + PSI_RWLOCK_READLOCK); if (likely(locker != NULL)) { - PSI_server->start_rwlock_rdwait(locker, src_file, src_line); + PSI_CALL(start_rwlock_rdwait)(locker, src_file, src_line); result= rw_pr_rdlock(&that->m_prlock); - PSI_server->end_rwlock_rdwait(locker, result); + PSI_CALL(end_rwlock_rdwait)(locker, result); return result; } #endif @@ -855,13 +855,13 @@ static inline int inline_mysql_rwlock_wr #ifdef HAVE_PSI_RWLOCK_INTERFACE struct PSI_rwlock_locker *locker; PSI_rwlock_locker_state state; - locker= PSI_server->get_thread_rwlock_locker(&state, that->m_psi, - PSI_RWLOCK_WRITELOCK); + locker= PSI_CALL(get_thread_rwlock_locker)(&state, that->m_psi, + PSI_RWLOCK_WRITELOCK); if (likely(locker != NULL)) { - PSI_server->start_rwlock_wrwait(locker, src_file, src_line); + PSI_CALL(start_rwlock_wrwait)(locker, src_file, src_line); result= rw_wrlock(&that->m_rwlock); - PSI_server->end_rwlock_wrwait(locker, result); + PSI_CALL(end_rwlock_wrwait)(locker, result); return result; } #endif @@ -882,13 +882,13 @@ static inline int inline_mysql_prlock_wr #ifdef HAVE_PSI_RWLOCK_INTERFACE struct PSI_rwlock_locker *locker; PSI_rwlock_locker_state state; - locker= PSI_server->get_thread_rwlock_locker(&state, that->m_psi, - PSI_RWLOCK_WRITELOCK); + locker= PSI_CALL(get_thread_rwlock_locker)(&state, that->m_psi, + PSI_RWLOCK_WRITELOCK); if (likely(locker != NULL)) { - PSI_server->start_rwlock_wrwait(locker, src_file, src_line); + PSI_CALL(start_rwlock_wrwait)(locker, src_file, src_line); result= rw_pr_wrlock(&that->m_prlock); - PSI_server->end_rwlock_wrwait(locker, result); + PSI_CALL(end_rwlock_wrwait)(locker, result); return result; } #endif @@ -909,13 +909,13 @@ static inline int inline_mysql_rwlock_tr #ifdef HAVE_PSI_RWLOCK_INTERFACE struct PSI_rwlock_locker *locker; PSI_rwlock_locker_state state; - locker= PSI_server->get_thread_rwlock_locker(&state, that->m_psi, - PSI_RWLOCK_TRYREADLOCK); + locker= PSI_CALL(get_thread_rwlock_locker)(&state, that->m_psi, + PSI_RWLOCK_TRYREADLOCK); if (likely(locker != NULL)) { - PSI_server->start_rwlock_rdwait(locker, src_file, src_line); + PSI_CALL(start_rwlock_rdwait)(locker, src_file, src_line); result= rw_tryrdlock(&that->m_rwlock); - PSI_server->end_rwlock_rdwait(locker, result); + PSI_CALL(end_rwlock_rdwait)(locker, result); return result; } #endif @@ -935,13 +935,13 @@ static inline int inline_mysql_rwlock_tr #ifdef HAVE_PSI_RWLOCK_INTERFACE struct PSI_rwlock_locker *locker; PSI_rwlock_locker_state state; - locker= PSI_server->get_thread_rwlock_locker(&state, that->m_psi, - PSI_RWLOCK_TRYWRITELOCK); + locker= PSI_CALL(get_thread_rwlock_locker)(&state, that->m_psi, + PSI_RWLOCK_TRYWRITELOCK); if (likely(locker != NULL)) { - PSI_server->start_rwlock_wrwait(locker, src_file, src_line); + PSI_CALL(start_rwlock_wrwait)(locker, src_file, src_line); result= rw_trywrlock(&that->m_rwlock); - PSI_server->end_rwlock_wrwait(locker, result); + PSI_CALL(end_rwlock_wrwait)(locker, result); return result; } #endif @@ -955,7 +955,7 @@ static inline int inline_mysql_rwlock_un { int result; #ifdef HAVE_PSI_RWLOCK_INTERFACE - PSI_server->unlock_rwlock(that->m_psi); + PSI_CALL(unlock_rwlock)(that->m_psi); #endif result= rw_unlock(&that->m_rwlock); return result; @@ -967,7 +967,7 @@ static inline int inline_mysql_prlock_un { int result; #ifdef HAVE_PSI_RWLOCK_INTERFACE - PSI_server->unlock_rwlock(that->m_psi); + PSI_CALL(unlock_rwlock)(that->m_psi); #endif result= rw_pr_unlock(&that->m_prlock); return result; @@ -987,7 +987,7 @@ static inline void inline_mysql_cond_reg ) { #ifdef HAVE_PSI_COND_INTERFACE - PSI_server->register_cond(category, info, count); + PSI_CALL(register_cond)(category, info, count); #endif } @@ -999,7 +999,7 @@ static inline int inline_mysql_cond_init const pthread_condattr_t *attr) { #ifdef HAVE_PSI_COND_INTERFACE - that->m_psi= PSI_server->init_cond(key, &that->m_cond); + that->m_psi= PSI_CALL(init_cond)(key, &that->m_cond); #else that->m_psi= NULL; #endif @@ -1010,7 +1010,7 @@ static inline int inline_mysql_cond_dest mysql_cond_t *that) { #ifdef HAVE_PSI_COND_INTERFACE - PSI_server->destroy_cond(that->m_psi); + PSI_CALL(destroy_cond)(that->m_psi); that->m_psi= NULL; #endif return pthread_cond_destroy(&that->m_cond); @@ -1028,13 +1028,13 @@ static inline int inline_mysql_cond_wait #ifdef HAVE_PSI_COND_INTERFACE struct PSI_cond_locker *locker; PSI_cond_locker_state state; - locker= PSI_server->get_thread_cond_locker(&state, that->m_psi, mutex->m_psi, - PSI_COND_WAIT); + locker= PSI_CALL(get_thread_cond_locker)(&state, that->m_psi, mutex->m_psi, + PSI_COND_WAIT); if (likely(locker != NULL)) { - PSI_server->start_cond_wait(locker, src_file, src_line); + PSI_CALL(start_cond_wait)(locker, src_file, src_line); result= pthread_cond_wait(&that->m_cond, &mutex->m_mutex); - PSI_server->end_cond_wait(locker, result); + PSI_CALL(end_cond_wait)(locker, result); return result; } #endif @@ -1056,13 +1056,13 @@ static inline int inline_mysql_cond_time #ifdef HAVE_PSI_COND_INTERFACE struct PSI_cond_locker *locker; PSI_cond_locker_state state; - locker= PSI_server->get_thread_cond_locker(&state, that->m_psi, mutex->m_psi, - PSI_COND_TIMEDWAIT); + locker= PSI_CALL(get_thread_cond_locker)(&state, that->m_psi, mutex->m_psi, + PSI_COND_TIMEDWAIT); if (likely(locker != NULL)) { - PSI_server->start_cond_wait(locker, src_file, src_line); + PSI_CALL(start_cond_wait)(locker, src_file, src_line); result= pthread_cond_timedwait(&that->m_cond, &mutex->m_mutex, abstime); - PSI_server->end_cond_wait(locker, result); + PSI_CALL(end_cond_wait)(locker, result); return result; } #endif @@ -1076,7 +1076,7 @@ static inline int inline_mysql_cond_sign { int result; #ifdef HAVE_PSI_COND_INTERFACE - PSI_server->signal_cond(that->m_psi); + PSI_CALL(signal_cond)(that->m_psi); #endif result= pthread_cond_signal(&that->m_cond); return result; @@ -1087,7 +1087,7 @@ static inline int inline_mysql_cond_broa { int result; #ifdef HAVE_PSI_COND_INTERFACE - PSI_server->broadcast_cond(that->m_psi); + PSI_CALL(broadcast_cond)(that->m_psi); #endif result= pthread_cond_broadcast(&that->m_cond); return result; @@ -1106,7 +1106,7 @@ static inline void inline_mysql_thread_r ) { #ifdef HAVE_PSI_THREAD_INTERFACE - PSI_server->register_thread(category, info, count); + PSI_CALL(register_thread)(category, info, count); #endif } @@ -1117,15 +1117,15 @@ static inline int inline_mysql_thread_cr void *(*start_routine)(void*), void *arg) { int result; - result= PSI_server->spawn_thread(key, thread, attr, start_routine, arg); + result= PSI_CALL(spawn_thread)(key, thread, attr, start_routine, arg); return result; } static inline void inline_mysql_thread_set_psi_id(ulong id) { - struct PSI_thread *psi= PSI_server->get_thread(); + struct PSI_thread *psi= PSI_CALL(get_thread)(); if (likely(psi != NULL)) - PSI_server->set_thread_id(psi, id); + PSI_CALL(set_thread_id)(psi, id); } #endif === modified file 'include/mysql/psi/psi.h' --- a/include/mysql/psi/psi.h 2011-04-26 20:35:24 +0000 +++ b/include/mysql/psi/psi.h 2011-05-04 05:02:43 +0000 @@ -1961,6 +1961,18 @@ typedef struct PSI_stage_info_none PSI_s extern MYSQL_PLUGIN_IMPORT PSI *PSI_server; +#define PSI_CALL(API) PSI_server->API + +/* Not implemented yet: static calls for statically compiled code */ +#ifdef LATER +#ifdef USE_PSI_1 +#define PSI_CALL(API) pfs_ ## API ## _v1 +#endif +#ifdef USE_PSI_2 +#define PSI_CALL(API) pfs_ ## API ## _v2 +#endif +#endif + /** @} */ C_MODE_END === modified file 'storage/innobase/include/os0file.h' --- a/storage/innobase/include/os0file.h 2011-04-13 08:34:16 +0000 +++ b/storage/innobase/include/os0file.h 2011-05-04 05:02:43 +0000 @@ -204,20 +204,18 @@ used to register actual file read, write # define register_pfs_file_open_begin(state, locker, key, op, name, \ src_file, src_line) \ do { \ - if (PSI_server) { \ - locker = PSI_server->get_thread_file_name_locker( \ - state, key, op, name, &locker); \ - if (locker) { \ - PSI_server->start_file_open_wait( \ - locker, src_file, src_line); \ - } \ + locker = PSI_CALL(get_thread_file_name_locker)( \ + state, key, op, name, &locker); \ + if (UNIV_LIKELY(locker != NULL)) { \ + PSI_CALL(start_file_open_wait)( \ + locker, src_file, src_line); \ } \ } while (0) # define register_pfs_file_open_end(locker, file) \ do { \ - if (locker) { \ - PSI_server->end_file_open_wait_and_bind_to_descriptor( \ + if (UNIV_LIKELY(locker != NULL)) { \ + PSI_CALL(end_file_open_wait_and_bind_to_descriptor)( \ locker, file); \ } \ } while (0) @@ -225,20 +223,18 @@ do { \ # define register_pfs_file_io_begin(state, locker, file, count, op, \ src_file, src_line) \ do { \ - if (PSI_server) { \ - locker = PSI_server->get_thread_file_descriptor_locker( \ - state, file, op); \ - if (locker) { \ - PSI_server->start_file_wait( \ - locker, count, src_file, src_line); \ - } \ + locker = PSI_CALL(get_thread_file_descriptor_locker)( \ + state, file, op); \ + if (UNIV_LIKELY(locker != NULL)) { \ + PSI_CALL(start_file_wait)( \ + locker, count, src_file, src_line); \ } \ } while (0) # define register_pfs_file_io_end(locker, count) \ do { \ - if (locker) { \ - PSI_server->end_file_wait(locker, count); \ + if (UNIV_LIKELY(locker != NULL)) { \ + PSI_CALL(end_file_wait)(locker, count); \ } \ } while (0) #endif /* UNIV_PFS_IO */ === modified file 'storage/innobase/include/os0sync.ic' --- a/storage/innobase/include/os0sync.ic 2011-05-04 03:17:46 +0000 +++ b/storage/innobase/include/os0sync.ic 2011-05-04 05:02:43 +0000 @@ -66,7 +66,7 @@ pfs_os_fast_mutex_init( os_fast_mutex_t* fast_mutex) /*!< out: fast mutex */ { #ifdef HAVE_PSI_MUTEX_INTERFACE - fast_mutex->pfs_psi = PSI_server->init_mutex(key, &fast_mutex->mutex); + fast_mutex->pfs_psi = PSI_CALL(init_mutex)(key, &fast_mutex->mutex); #else fast_mutex->pfs_psi = NULL; #endif @@ -85,7 +85,7 @@ pfs_os_fast_mutex_free( os_fast_mutex_t* fast_mutex) /*!< in/out: mutex */ { #ifdef HAVE_PSI_MUTEX_INTERFACE - PSI_server->destroy_mutex(fast_mutex->pfs_psi); + PSI_CALL(destroy_mutex)(fast_mutex->pfs_psi); #endif fast_mutex->pfs_psi = NULL; @@ -109,13 +109,13 @@ pfs_os_fast_mutex_lock( struct PSI_mutex_locker* locker; PSI_mutex_locker_state state; - locker = PSI_server->get_thread_mutex_locker( + locker = PSI_CALL(get_thread_mutex_locker)( &state, fast_mutex->pfs_psi, PSI_MUTEX_LOCK); if (UNIV_LIKELY(locker != NULL)) { - PSI_server->start_mutex_wait(locker, file_name, line); + PSI_CALL(start_mutex_wait)(locker, file_name, line); os_fast_mutex_lock_func(&fast_mutex->mutex); - PSI_server->end_mutex_wait(locker, 0); + PSI_CALL(end_mutex_wait)(locker, 0); return; } #endif @@ -134,7 +134,7 @@ pfs_os_fast_mutex_unlock( os_fast_mutex_t* fast_mutex) /*!< in/out: mutex to release */ { #ifdef HAVE_PSI_MUTEX_INTERFACE - PSI_server->unlock_mutex(fast_mutex->pfs_psi); + PSI_CALL(unlock_mutex)(fast_mutex->pfs_psi); #endif os_fast_mutex_unlock_func(&fast_mutex->mutex); === modified file 'storage/innobase/include/srv0srv.h' --- a/storage/innobase/include/srv0srv.h 2011-04-26 18:59:22 +0000 +++ b/storage/innobase/include/srv0srv.h 2011-05-04 05:02:43 +0000 @@ -360,20 +360,16 @@ extern mysql_pfs_key_t srv_purge_thread_ schema */ # define pfs_register_thread(key) \ do { \ - if (PSI_server) { \ - struct PSI_thread* psi = PSI_server->new_thread(key, NULL, 0);\ - if (psi) { \ - PSI_server->set_thread(psi); \ - } \ + struct PSI_thread* psi = PSI_CALL(new_thread)(key, NULL, 0);\ + if (UNIV_LIKELY(psi != NULL)) { \ + PSI_CALL(set_thread)(psi); \ } \ } while (0) /* This macro delist the current thread from performance schema */ # define pfs_delete_thread() \ do { \ - if (PSI_server) { \ - PSI_server->delete_current_thread(); \ - } \ + PSI_CALL(delete_current_thread)(); \ } while (0) # endif /* UNIV_PFS_THREAD */ === modified file 'storage/innobase/include/sync0rw.ic' --- a/storage/innobase/include/sync0rw.ic 2011-05-04 03:17:46 +0000 +++ b/storage/innobase/include/sync0rw.ic 2011-05-04 05:02:43 +0000 @@ -647,7 +647,7 @@ pfs_rw_lock_create_func( { #ifdef HAVE_PSI_RWLOCK_INTERFACE /* Initialize the rwlock for performance schema */ - lock->pfs_psi = PSI_server->init_rwlock(key, lock); + lock->pfs_psi = PSI_CALL(init_rwlock)(key, lock); #else lock->pfs_psi = NULL; #endif @@ -682,14 +682,14 @@ pfs_rw_lock_x_lock_func( PSI_rwlock_locker_state state; /* Record the entry of rw x lock request in performance schema */ - locker = PSI_server->get_thread_rwlock_locker( + locker = PSI_CALL(get_thread_rwlock_locker)( &state, lock->pfs_psi, PSI_RWLOCK_WRITELOCK); if (UNIV_LIKELY(locker != NULL)) { - PSI_server->start_rwlock_wrwait(locker, file_name, line); + PSI_CALL(start_rwlock_wrwait)(locker, file_name, line); rw_lock_x_lock_func(lock, pass, file_name, line); - PSI_server->end_rwlock_wrwait(locker, 0); + PSI_CALL(end_rwlock_wrwait)(locker, 0); return; } #endif @@ -717,14 +717,14 @@ pfs_rw_lock_x_lock_func_nowait( ibool ret; /* Record the entry of rw x lock request in performance schema */ - locker = PSI_server->get_thread_rwlock_locker( + locker = PSI_CALL(get_thread_rwlock_locker)( &state, lock->pfs_psi, PSI_RWLOCK_WRITELOCK); if (UNIV_LIKELY(locker != NULL)) { - PSI_server->start_rwlock_wrwait(locker, file_name, line); + PSI_CALL(start_rwlock_wrwait)(locker, file_name, line); ret = rw_lock_x_lock_func_nowait(lock, file_name, line); - PSI_server->end_rwlock_wrwait(locker, 0); + PSI_CALL(end_rwlock_wrwait)(locker, 0); return(ret); } #endif @@ -743,7 +743,7 @@ pfs_rw_lock_free_func( rw_lock_t* lock) /*!< in: pointer to rw-lock */ { #ifdef HAVE_PSI_RWLOCK_INTERFACE - PSI_server->destroy_rwlock(lock->pfs_psi); + PSI_CALL(destroy_rwlock)(lock->pfs_psi); #endif lock->pfs_psi = NULL; @@ -770,13 +770,13 @@ pfs_rw_lock_s_lock_func( PSI_rwlock_locker_state state; /* Instrumented to inform we are aquiring a shared rwlock */ - locker = PSI_server->get_thread_rwlock_locker( + locker = PSI_CALL(get_thread_rwlock_locker)( &state, lock->pfs_psi, PSI_RWLOCK_READLOCK); if (UNIV_LIKELY(locker != NULL)) { - PSI_server->start_rwlock_rdwait(locker, file_name, line); + PSI_CALL(start_rwlock_rdwait)(locker, file_name, line); rw_lock_s_lock_func(lock, pass, file_name, line); - PSI_server->end_rwlock_rdwait(locker, 0); + PSI_CALL(end_rwlock_rdwait)(locker, 0); return; } #endif @@ -805,13 +805,13 @@ pfs_rw_lock_s_lock_low( ibool ret; /* Instrumented to inform we are aquiring a shared rwlock */ - locker = PSI_server->get_thread_rwlock_locker( + locker = PSI_CALL(get_thread_rwlock_locker)( &state, lock->pfs_psi, PSI_RWLOCK_READLOCK); if (UNIV_LIKELY(locker != NULL)) { - PSI_server->start_rwlock_rdwait(locker, file_name, line); + PSI_CALL(start_rwlock_rdwait)(locker, file_name, line); ret = rw_lock_s_lock_low(lock, pass, file_name, line); - PSI_server->end_rwlock_rdwait(locker, 0); + PSI_CALL(end_rwlock_rdwait)(locker, 0); return(ret); } #endif @@ -837,7 +837,7 @@ pfs_rw_lock_x_unlock_func( { #ifdef HAVE_PSI_RWLOCK_INTERFACE /* Inform performance schema we are unlocking the lock */ - PSI_server->unlock_rwlock(lock->pfs_psi); + PSI_CALL(unlock_rwlock)(lock->pfs_psi); #endif rw_lock_x_unlock_func( @@ -864,7 +864,7 @@ pfs_rw_lock_s_unlock_func( { #ifdef HAVE_PSI_RWLOCK_INTERFACE /* Inform performance schema we are unlocking the lock */ - PSI_server->unlock_rwlock(lock->pfs_psi); + PSI_CALL(unlock_rwlock)(lock->pfs_psi); #endif rw_lock_s_unlock_func( === modified file 'storage/innobase/include/sync0sync.ic' --- a/storage/innobase/include/sync0sync.ic 2011-05-04 03:17:46 +0000 +++ b/storage/innobase/include/sync0sync.ic 2011-05-04 05:02:43 +0000 @@ -240,13 +240,13 @@ pfs_mutex_enter_func( struct PSI_mutex_locker* locker; PSI_mutex_locker_state state; - locker = PSI_server->get_thread_mutex_locker( + locker = PSI_CALL(get_thread_mutex_locker)( &state, mutex->pfs_psi, PSI_MUTEX_LOCK); if (UNIV_LIKELY(locker != NULL)) { - PSI_server->start_mutex_wait(locker, file_name, line); + PSI_CALL(start_mutex_wait)(locker, file_name, line); mutex_enter_func(mutex, file_name, line); - PSI_server->end_mutex_wait(locker, 0); + PSI_CALL(end_mutex_wait)(locker, 0); return; } #endif @@ -274,13 +274,13 @@ pfs_mutex_enter_nowait_func( struct PSI_mutex_locker* locker = NULL; PSI_mutex_locker_state state; - locker = PSI_server->get_thread_mutex_locker( + locker = PSI_CALL(get_thread_mutex_locker)( &state, mutex->pfs_psi, PSI_MUTEX_LOCK); if (UNIV_LIKELY(locker != NULL)) { - PSI_server->start_mutex_wait(locker, file_name, line); + PSI_CALL(start_mutex_wait)(locker, file_name, line); ret = mutex_enter_nowait_func(mutex, file_name, line); - PSI_server->end_mutex_wait(locker, 0); + PSI_CALL(end_mutex_wait)(locker, 0); return(ret); } #endif @@ -300,7 +300,7 @@ pfs_mutex_exit_func( mutex_t* mutex) /*!< in: pointer to mutex */ { #ifdef HAVE_PSI_MUTEX_INTERFACE - PSI_server->unlock_mutex(mutex->pfs_psi); + PSI_CALL(unlock_mutex)(mutex->pfs_psi); #endif mutex_exit_func(mutex); @@ -328,7 +328,7 @@ pfs_mutex_create_func( ulint cline) /*!< in: file line where created */ { #ifdef HAVE_PSI_MUTEX_INTERFACE - mutex->pfs_psi = PSI_server->init_mutex(key, mutex); + mutex->pfs_psi = PSI_CALL(init_mutex)(key, mutex); #else mutex->pfs_psi = NULL; #endif @@ -355,7 +355,7 @@ pfs_mutex_free_func( mutex_t* mutex) /*!< in: mutex */ { #ifdef HAVE_PSI_MUTEX_INTERFACE - PSI_server->destroy_mutex(mutex->pfs_psi); + PSI_CALL(destroy_mutex)(mutex->pfs_psi); #endif mutex->pfs_psi = NULL; --===============0770659371425854874== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/marc.alff@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: marc.alff@stripped # target_branch: file:///Users/malff/BZR_TREE/mysql-trunk-pfs-tuning/ # testament_sha1: aa13cd78d564addc511cd2e9e4bad43e10761fe3 # timestamp: 2011-05-03 23:02:50 -0600 # base_revision_id: marc.alff@stripped\ # 7v6dau4bt8ccd7sl # # Begin bundle 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 --===============0770659371425854874==--