Commit ec412876 authored by Marc Alff's avatar Marc Alff

Bug#55087 Performance schema: optimization of the instrumentation interface

This change is for performance optimization.

Fixed the performance schema instrumentation interface as follows:
- simplified mysql_unlock_mutex()
- simplified mysql_unlock_rwlock()
- simplified mysql_cond_signal()
- simplified mysql_cond_broadcast()

Changed the get_thread_XXX_locker apis to have one extra parameter,
to provide memory to the instrumentation implementation.
This API change allows to use memory provided by the caller,
to avoid having to use thread local storage.
Using this extra parameter will be done in a separate fix,
this change is for the interface only.

Adjusted all the code and unit tests accordingly.
parent f56dd32b
This diff is collapsed.
...@@ -625,9 +625,10 @@ static inline int inline_mysql_mutex_lock( ...@@ -625,9 +625,10 @@ static inline int inline_mysql_mutex_lock(
int result; int result;
#ifdef HAVE_PSI_INTERFACE #ifdef HAVE_PSI_INTERFACE
struct PSI_mutex_locker *locker= NULL; struct PSI_mutex_locker *locker= NULL;
PSI_mutex_locker_state state;
if (likely(PSI_server && that->m_psi)) if (likely(PSI_server && that->m_psi))
{ {
locker= PSI_server->get_thread_mutex_locker(that->m_psi, PSI_MUTEX_LOCK); locker= PSI_server->get_thread_mutex_locker(&state, that->m_psi, PSI_MUTEX_LOCK);
if (likely(locker != NULL)) if (likely(locker != NULL))
PSI_server->start_mutex_wait(locker, src_file, src_line); PSI_server->start_mutex_wait(locker, src_file, src_line);
} }
...@@ -654,9 +655,10 @@ static inline int inline_mysql_mutex_trylock( ...@@ -654,9 +655,10 @@ static inline int inline_mysql_mutex_trylock(
int result; int result;
#ifdef HAVE_PSI_INTERFACE #ifdef HAVE_PSI_INTERFACE
struct PSI_mutex_locker *locker= NULL; struct PSI_mutex_locker *locker= NULL;
PSI_mutex_locker_state state;
if (likely(PSI_server && that->m_psi)) if (likely(PSI_server && that->m_psi))
{ {
locker= PSI_server->get_thread_mutex_locker(that->m_psi, PSI_MUTEX_TRYLOCK); locker= PSI_server->get_thread_mutex_locker(&state, that->m_psi, PSI_MUTEX_TRYLOCK);
if (likely(locker != NULL)) if (likely(locker != NULL))
PSI_server->start_mutex_wait(locker, src_file, src_line); PSI_server->start_mutex_wait(locker, src_file, src_line);
} }
...@@ -682,13 +684,8 @@ static inline int inline_mysql_mutex_unlock( ...@@ -682,13 +684,8 @@ static inline int inline_mysql_mutex_unlock(
{ {
int result; int result;
#ifdef HAVE_PSI_INTERFACE #ifdef HAVE_PSI_INTERFACE
struct PSI_thread *thread;
if (likely(PSI_server && that->m_psi)) if (likely(PSI_server && that->m_psi))
{ PSI_server->unlock_mutex(that->m_psi);
thread= PSI_server->get_thread();
if (likely(thread != NULL))
PSI_server->unlock_mutex(thread, that->m_psi);
}
#endif #endif
#ifdef SAFE_MUTEX #ifdef SAFE_MUTEX
result= safe_mutex_unlock(&that->m_mutex, src_file, src_line); result= safe_mutex_unlock(&that->m_mutex, src_file, src_line);
...@@ -771,9 +768,10 @@ static inline int inline_mysql_rwlock_rdlock( ...@@ -771,9 +768,10 @@ static inline int inline_mysql_rwlock_rdlock(
int result; int result;
#ifdef HAVE_PSI_INTERFACE #ifdef HAVE_PSI_INTERFACE
struct PSI_rwlock_locker *locker= NULL; struct PSI_rwlock_locker *locker= NULL;
PSI_rwlock_locker_state state;
if (likely(PSI_server && that->m_psi)) if (likely(PSI_server && that->m_psi))
{ {
locker= PSI_server->get_thread_rwlock_locker(that->m_psi, locker= PSI_server->get_thread_rwlock_locker(&state, that->m_psi,
PSI_RWLOCK_READLOCK); PSI_RWLOCK_READLOCK);
if (likely(locker != NULL)) if (likely(locker != NULL))
PSI_server->start_rwlock_rdwait(locker, src_file, src_line); PSI_server->start_rwlock_rdwait(locker, src_file, src_line);
...@@ -798,9 +796,10 @@ static inline int inline_mysql_prlock_rdlock( ...@@ -798,9 +796,10 @@ static inline int inline_mysql_prlock_rdlock(
int result; int result;
#ifdef HAVE_PSI_INTERFACE #ifdef HAVE_PSI_INTERFACE
struct PSI_rwlock_locker *locker= NULL; struct PSI_rwlock_locker *locker= NULL;
PSI_rwlock_locker_state state;
if (likely(PSI_server && that->m_psi)) if (likely(PSI_server && that->m_psi))
{ {
locker= PSI_server->get_thread_rwlock_locker(that->m_psi, locker= PSI_server->get_thread_rwlock_locker(&state, that->m_psi,
PSI_RWLOCK_READLOCK); PSI_RWLOCK_READLOCK);
if (likely(locker != NULL)) if (likely(locker != NULL))
PSI_server->start_rwlock_rdwait(locker, src_file, src_line); PSI_server->start_rwlock_rdwait(locker, src_file, src_line);
...@@ -825,9 +824,10 @@ static inline int inline_mysql_rwlock_wrlock( ...@@ -825,9 +824,10 @@ static inline int inline_mysql_rwlock_wrlock(
int result; int result;
#ifdef HAVE_PSI_INTERFACE #ifdef HAVE_PSI_INTERFACE
struct PSI_rwlock_locker *locker= NULL; struct PSI_rwlock_locker *locker= NULL;
PSI_rwlock_locker_state state;
if (likely(PSI_server && that->m_psi)) if (likely(PSI_server && that->m_psi))
{ {
locker= PSI_server->get_thread_rwlock_locker(that->m_psi, locker= PSI_server->get_thread_rwlock_locker(&state, that->m_psi,
PSI_RWLOCK_WRITELOCK); PSI_RWLOCK_WRITELOCK);
if (likely(locker != NULL)) if (likely(locker != NULL))
PSI_server->start_rwlock_wrwait(locker, src_file, src_line); PSI_server->start_rwlock_wrwait(locker, src_file, src_line);
...@@ -852,9 +852,10 @@ static inline int inline_mysql_prlock_wrlock( ...@@ -852,9 +852,10 @@ static inline int inline_mysql_prlock_wrlock(
int result; int result;
#ifdef HAVE_PSI_INTERFACE #ifdef HAVE_PSI_INTERFACE
struct PSI_rwlock_locker *locker= NULL; struct PSI_rwlock_locker *locker= NULL;
PSI_rwlock_locker_state state;
if (likely(PSI_server && that->m_psi)) if (likely(PSI_server && that->m_psi))
{ {
locker= PSI_server->get_thread_rwlock_locker(that->m_psi, locker= PSI_server->get_thread_rwlock_locker(&state, that->m_psi,
PSI_RWLOCK_WRITELOCK); PSI_RWLOCK_WRITELOCK);
if (likely(locker != NULL)) if (likely(locker != NULL))
PSI_server->start_rwlock_wrwait(locker, src_file, src_line); PSI_server->start_rwlock_wrwait(locker, src_file, src_line);
...@@ -879,9 +880,10 @@ static inline int inline_mysql_rwlock_tryrdlock( ...@@ -879,9 +880,10 @@ static inline int inline_mysql_rwlock_tryrdlock(
int result; int result;
#ifdef HAVE_PSI_INTERFACE #ifdef HAVE_PSI_INTERFACE
struct PSI_rwlock_locker *locker= NULL; struct PSI_rwlock_locker *locker= NULL;
PSI_rwlock_locker_state state;
if (likely(PSI_server && that->m_psi)) if (likely(PSI_server && that->m_psi))
{ {
locker= PSI_server->get_thread_rwlock_locker(that->m_psi, locker= PSI_server->get_thread_rwlock_locker(&state, that->m_psi,
PSI_RWLOCK_TRYREADLOCK); PSI_RWLOCK_TRYREADLOCK);
if (likely(locker != NULL)) if (likely(locker != NULL))
PSI_server->start_rwlock_rdwait(locker, src_file, src_line); PSI_server->start_rwlock_rdwait(locker, src_file, src_line);
...@@ -906,9 +908,10 @@ static inline int inline_mysql_prlock_tryrdlock( ...@@ -906,9 +908,10 @@ static inline int inline_mysql_prlock_tryrdlock(
int result; int result;
#ifdef HAVE_PSI_INTERFACE #ifdef HAVE_PSI_INTERFACE
struct PSI_rwlock_locker *locker= NULL; struct PSI_rwlock_locker *locker= NULL;
PSI_rwlock_locker_state state;
if (likely(PSI_server && that->m_psi)) if (likely(PSI_server && that->m_psi))
{ {
locker= PSI_server->get_thread_rwlock_locker(that->m_psi, locker= PSI_server->get_thread_rwlock_locker(&state, that->m_psi,
PSI_RWLOCK_TRYREADLOCK); PSI_RWLOCK_TRYREADLOCK);
if (likely(locker != NULL)) if (likely(locker != NULL))
PSI_server->start_rwlock_rdwait(locker, src_file, src_line); PSI_server->start_rwlock_rdwait(locker, src_file, src_line);
...@@ -933,9 +936,10 @@ static inline int inline_mysql_rwlock_trywrlock( ...@@ -933,9 +936,10 @@ static inline int inline_mysql_rwlock_trywrlock(
int result; int result;
#ifdef HAVE_PSI_INTERFACE #ifdef HAVE_PSI_INTERFACE
struct PSI_rwlock_locker *locker= NULL; struct PSI_rwlock_locker *locker= NULL;
PSI_rwlock_locker_state state;
if (likely(PSI_server && that->m_psi)) if (likely(PSI_server && that->m_psi))
{ {
locker= PSI_server->get_thread_rwlock_locker(that->m_psi, locker= PSI_server->get_thread_rwlock_locker(&state, that->m_psi,
PSI_RWLOCK_TRYWRITELOCK); PSI_RWLOCK_TRYWRITELOCK);
if (likely(locker != NULL)) if (likely(locker != NULL))
PSI_server->start_rwlock_wrwait(locker, src_file, src_line); PSI_server->start_rwlock_wrwait(locker, src_file, src_line);
...@@ -960,9 +964,10 @@ static inline int inline_mysql_prlock_trywrlock( ...@@ -960,9 +964,10 @@ static inline int inline_mysql_prlock_trywrlock(
int result; int result;
#ifdef HAVE_PSI_INTERFACE #ifdef HAVE_PSI_INTERFACE
struct PSI_rwlock_locker *locker= NULL; struct PSI_rwlock_locker *locker= NULL;
PSI_rwlock_locker_state state;
if (likely(PSI_server && that->m_psi)) if (likely(PSI_server && that->m_psi))
{ {
locker= PSI_server->get_thread_rwlock_locker(that->m_psi, locker= PSI_server->get_thread_rwlock_locker(&state, that->m_psi,
PSI_RWLOCK_TRYWRITELOCK); PSI_RWLOCK_TRYWRITELOCK);
if (likely(locker != NULL)) if (likely(locker != NULL))
PSI_server->start_rwlock_wrwait(locker, src_file, src_line); PSI_server->start_rwlock_wrwait(locker, src_file, src_line);
...@@ -982,13 +987,8 @@ static inline int inline_mysql_rwlock_unlock( ...@@ -982,13 +987,8 @@ static inline int inline_mysql_rwlock_unlock(
{ {
int result; int result;
#ifdef HAVE_PSI_INTERFACE #ifdef HAVE_PSI_INTERFACE
struct PSI_thread *thread;
if (likely(PSI_server && that->m_psi)) if (likely(PSI_server && that->m_psi))
{ PSI_server->unlock_rwlock(that->m_psi);
thread= PSI_server->get_thread();
if (likely(thread != NULL))
PSI_server->unlock_rwlock(thread, that->m_psi);
}
#endif #endif
result= rw_unlock(&that->m_rwlock); result= rw_unlock(&that->m_rwlock);
return result; return result;
...@@ -1000,13 +1000,8 @@ static inline int inline_mysql_prlock_unlock( ...@@ -1000,13 +1000,8 @@ static inline int inline_mysql_prlock_unlock(
{ {
int result; int result;
#ifdef HAVE_PSI_INTERFACE #ifdef HAVE_PSI_INTERFACE
struct PSI_thread *thread;
if (likely(PSI_server && that->m_psi)) if (likely(PSI_server && that->m_psi))
{ PSI_server->unlock_rwlock(that->m_psi);
thread= PSI_server->get_thread();
if (likely(thread != NULL))
PSI_server->unlock_rwlock(thread, that->m_psi);
}
#endif #endif
result= rw_pr_unlock(&that->m_prlock); result= rw_pr_unlock(&that->m_prlock);
return result; return result;
...@@ -1053,9 +1048,10 @@ static inline int inline_mysql_cond_wait( ...@@ -1053,9 +1048,10 @@ static inline int inline_mysql_cond_wait(
int result; int result;
#ifdef HAVE_PSI_INTERFACE #ifdef HAVE_PSI_INTERFACE
struct PSI_cond_locker *locker= NULL; struct PSI_cond_locker *locker= NULL;
PSI_cond_locker_state state;
if (likely(PSI_server && that->m_psi)) if (likely(PSI_server && that->m_psi))
{ {
locker= PSI_server->get_thread_cond_locker(that->m_psi, mutex->m_psi, locker= PSI_server->get_thread_cond_locker(&state, that->m_psi, mutex->m_psi,
PSI_COND_WAIT); PSI_COND_WAIT);
if (likely(locker != NULL)) if (likely(locker != NULL))
PSI_server->start_cond_wait(locker, src_file, src_line); PSI_server->start_cond_wait(locker, src_file, src_line);
...@@ -1081,9 +1077,10 @@ static inline int inline_mysql_cond_timedwait( ...@@ -1081,9 +1077,10 @@ static inline int inline_mysql_cond_timedwait(
int result; int result;
#ifdef HAVE_PSI_INTERFACE #ifdef HAVE_PSI_INTERFACE
struct PSI_cond_locker *locker= NULL; struct PSI_cond_locker *locker= NULL;
PSI_cond_locker_state state;
if (likely(PSI_server && that->m_psi)) if (likely(PSI_server && that->m_psi))
{ {
locker= PSI_server->get_thread_cond_locker(that->m_psi, mutex->m_psi, locker= PSI_server->get_thread_cond_locker(&state, that->m_psi, mutex->m_psi,
PSI_COND_TIMEDWAIT); PSI_COND_TIMEDWAIT);
if (likely(locker != NULL)) if (likely(locker != NULL))
PSI_server->start_cond_wait(locker, src_file, src_line); PSI_server->start_cond_wait(locker, src_file, src_line);
...@@ -1102,13 +1099,8 @@ static inline int inline_mysql_cond_signal( ...@@ -1102,13 +1099,8 @@ static inline int inline_mysql_cond_signal(
{ {
int result; int result;
#ifdef HAVE_PSI_INTERFACE #ifdef HAVE_PSI_INTERFACE
struct PSI_thread *thread;
if (likely(PSI_server && that->m_psi)) if (likely(PSI_server && that->m_psi))
{ PSI_server->signal_cond(that->m_psi);
thread= PSI_server->get_thread();
if (likely(thread != NULL))
PSI_server->signal_cond(thread, that->m_psi);
}
#endif #endif
result= pthread_cond_signal(&that->m_cond); result= pthread_cond_signal(&that->m_cond);
return result; return result;
...@@ -1119,13 +1111,8 @@ static inline int inline_mysql_cond_broadcast( ...@@ -1119,13 +1111,8 @@ static inline int inline_mysql_cond_broadcast(
{ {
int result; int result;
#ifdef HAVE_PSI_INTERFACE #ifdef HAVE_PSI_INTERFACE
struct PSI_thread *thread;
if (likely(PSI_server && that->m_psi)) if (likely(PSI_server && that->m_psi))
{ PSI_server->broadcast_cond(that->m_psi);
thread= PSI_server->get_thread();
if (likely(thread != NULL))
PSI_server->broadcast_cond(thread, that->m_psi);
}
#endif #endif
result= pthread_cond_broadcast(&that->m_cond); result= pthread_cond_broadcast(&that->m_cond);
return result; return result;
......
This diff is collapsed.
...@@ -88,6 +88,71 @@ struct PSI_file_info_v1 ...@@ -88,6 +88,71 @@ struct PSI_file_info_v1
const char *m_name; const char *m_name;
int m_flags; int m_flags;
}; };
struct PSI_mutex_locker_state_v1
{
uint m_flags;
struct PSI_mutex *m_mutex;
struct PSI_thread *m_thread;
ulonglong m_timer_start;
ulonglong (*m_timer)(void);
enum PSI_mutex_operation m_operation;
const char* m_src_file;
int m_src_line;
void *m_wait;
};
struct PSI_rwlock_locker_state_v1
{
uint m_flags;
struct PSI_rwlock *m_rwlock;
struct PSI_thread *m_thread;
ulonglong m_timer_start;
ulonglong (*m_timer)(void);
enum PSI_rwlock_operation m_operation;
const char* m_src_file;
int m_src_line;
void *m_wait;
};
struct PSI_cond_locker_state_v1
{
uint m_flags;
struct PSI_cond *m_cond;
struct PSI_mutex *m_mutex;
struct PSI_thread *m_thread;
ulonglong m_timer_start;
ulonglong (*m_timer)(void);
enum PSI_cond_operation m_operation;
const char* m_src_file;
int m_src_line;
void *m_wait;
};
struct PSI_file_locker_state_v1
{
uint m_flags;
struct PSI_file *m_file;
struct PSI_thread *m_thread;
size_t m_number_of_bytes;
ulonglong m_timer_start;
ulonglong (*m_timer)(void);
enum PSI_file_operation m_operation;
const char* m_src_file;
int m_src_line;
void *m_wait;
};
struct PSI_table_locker_state_v1
{
uint m_flags;
struct PSI_table *m_table;
struct PSI_table_share *m_table_share;
void *m_class;
struct PSI_thread *m_thread;
ulonglong m_timer_start;
ulonglong (*m_timer)(void);
uint m_index;
uint m_lock_index;
const char* m_src_file;
int m_src_line;
void *m_wait;
};
typedef void (*register_mutex_v1_t) typedef void (*register_mutex_v1_t)
(const char *category, struct PSI_mutex_info_v1 *info, int count); (const char *category, struct PSI_mutex_info_v1 *info, int count);
typedef void (*register_rwlock_v1_t) typedef void (*register_rwlock_v1_t)
...@@ -129,29 +194,38 @@ typedef void (*set_thread_v1_t)(struct PSI_thread *thread); ...@@ -129,29 +194,38 @@ typedef void (*set_thread_v1_t)(struct PSI_thread *thread);
typedef void (*delete_current_thread_v1_t)(void); typedef void (*delete_current_thread_v1_t)(void);
typedef void (*delete_thread_v1_t)(struct PSI_thread *thread); typedef void (*delete_thread_v1_t)(struct PSI_thread *thread);
typedef struct PSI_mutex_locker* (*get_thread_mutex_locker_v1_t) typedef struct PSI_mutex_locker* (*get_thread_mutex_locker_v1_t)
(struct PSI_mutex *mutex, enum PSI_mutex_operation op); (struct PSI_mutex_locker_state_v1 *state,
struct PSI_mutex *mutex,
enum PSI_mutex_operation op);
typedef struct PSI_rwlock_locker* (*get_thread_rwlock_locker_v1_t) typedef struct PSI_rwlock_locker* (*get_thread_rwlock_locker_v1_t)
(struct PSI_rwlock *rwlock, enum PSI_rwlock_operation op); (struct PSI_rwlock_locker_state_v1 *state,
struct PSI_rwlock *rwlock,
enum PSI_rwlock_operation op);
typedef struct PSI_cond_locker* (*get_thread_cond_locker_v1_t) typedef struct PSI_cond_locker* (*get_thread_cond_locker_v1_t)
(struct PSI_cond *cond, struct PSI_mutex *mutex, (struct PSI_cond_locker_state_v1 *state,
struct PSI_cond *cond, struct PSI_mutex *mutex,
enum PSI_cond_operation op); enum PSI_cond_operation op);
typedef struct PSI_table_locker* (*get_thread_table_locker_v1_t) typedef struct PSI_table_locker* (*get_thread_table_locker_v1_t)
(struct PSI_table *table); (struct PSI_table_locker_state_v1 *state,
struct PSI_table *table);
typedef struct PSI_file_locker* (*get_thread_file_name_locker_v1_t) typedef struct PSI_file_locker* (*get_thread_file_name_locker_v1_t)
(PSI_file_key key, enum PSI_file_operation op, const char *name, (struct PSI_file_locker_state_v1 *state,
PSI_file_key key, enum PSI_file_operation op, const char *name,
const void *identity); const void *identity);
typedef struct PSI_file_locker* (*get_thread_file_stream_locker_v1_t) typedef struct PSI_file_locker* (*get_thread_file_stream_locker_v1_t)
(struct PSI_file *file, enum PSI_file_operation op); (struct PSI_file_locker_state_v1 *state,
struct PSI_file *file, enum PSI_file_operation op);
typedef struct PSI_file_locker* (*get_thread_file_descriptor_locker_v1_t) typedef struct PSI_file_locker* (*get_thread_file_descriptor_locker_v1_t)
(File file, enum PSI_file_operation op); (struct PSI_file_locker_state_v1 *state,
File file, enum PSI_file_operation op);
typedef void (*unlock_mutex_v1_t) typedef void (*unlock_mutex_v1_t)
(struct PSI_thread *thread, struct PSI_mutex *mutex); (struct PSI_mutex *mutex);
typedef void (*unlock_rwlock_v1_t) typedef void (*unlock_rwlock_v1_t)
(struct PSI_thread *thread, struct PSI_rwlock *rwlock); (struct PSI_rwlock *rwlock);
typedef void (*signal_cond_v1_t) typedef void (*signal_cond_v1_t)
(struct PSI_thread *thread, struct PSI_cond *cond); (struct PSI_cond *cond);
typedef void (*broadcast_cond_v1_t) typedef void (*broadcast_cond_v1_t)
(struct PSI_thread *thread, struct PSI_cond *cond); (struct PSI_cond *cond);
typedef void (*start_mutex_wait_v1_t) typedef void (*start_mutex_wait_v1_t)
(struct PSI_mutex_locker *locker, const char *src_file, uint src_line); (struct PSI_mutex_locker *locker, const char *src_file, uint src_line);
typedef void (*end_mutex_wait_v1_t) typedef void (*end_mutex_wait_v1_t)
...@@ -240,5 +314,10 @@ typedef struct PSI_rwlock_info_v1 PSI_rwlock_info; ...@@ -240,5 +314,10 @@ typedef struct PSI_rwlock_info_v1 PSI_rwlock_info;
typedef struct PSI_cond_info_v1 PSI_cond_info; typedef struct PSI_cond_info_v1 PSI_cond_info;
typedef struct PSI_thread_info_v1 PSI_thread_info; typedef struct PSI_thread_info_v1 PSI_thread_info;
typedef struct PSI_file_info_v1 PSI_file_info; typedef struct PSI_file_info_v1 PSI_file_info;
typedef struct PSI_mutex_locker_state_v1 PSI_mutex_locker_state;
typedef struct PSI_rwlock_locker_state_v1 PSI_rwlock_locker_state;
typedef struct PSI_cond_locker_state_v1 PSI_cond_locker_state;
typedef struct PSI_file_locker_state_v1 PSI_file_locker_state;
typedef struct PSI_table_locker_state_v1 PSI_table_locker_state;
extern MYSQL_PLUGIN_IMPORT PSI *PSI_server; extern MYSQL_PLUGIN_IMPORT PSI *PSI_server;
C_MODE_END C_MODE_END
...@@ -82,11 +82,36 @@ struct PSI_file_info_v2 ...@@ -82,11 +82,36 @@ struct PSI_file_info_v2
{ {
int placeholder; int placeholder;
}; };
struct PSI_mutex_locker_state_v2
{
int placeholder;
};
struct PSI_rwlock_locker_state_v2
{
int placeholder;
};
struct PSI_cond_locker_state_v2
{
int placeholder;
};
struct PSI_file_locker_state_v2
{
int placeholder;
};
struct PSI_table_locker_state_v2
{
int placeholder;
};
typedef struct PSI_v2 PSI; typedef struct PSI_v2 PSI;
typedef struct PSI_mutex_info_v2 PSI_mutex_info; typedef struct PSI_mutex_info_v2 PSI_mutex_info;
typedef struct PSI_rwlock_info_v2 PSI_rwlock_info; typedef struct PSI_rwlock_info_v2 PSI_rwlock_info;
typedef struct PSI_cond_info_v2 PSI_cond_info; typedef struct PSI_cond_info_v2 PSI_cond_info;
typedef struct PSI_thread_info_v2 PSI_thread_info; typedef struct PSI_thread_info_v2 PSI_thread_info;
typedef struct PSI_file_info_v2 PSI_file_info; typedef struct PSI_file_info_v2 PSI_file_info;
typedef struct PSI_mutex_locker_state_v2 PSI_mutex_locker_state;
typedef struct PSI_rwlock_locker_state_v2 PSI_rwlock_locker_state;
typedef struct PSI_cond_locker_state_v2 PSI_cond_locker_state;
typedef struct PSI_file_locker_state_v2 PSI_file_locker_state;
typedef struct PSI_table_locker_state_v2 PSI_table_locker_state;
extern MYSQL_PLUGIN_IMPORT PSI *PSI_server; extern MYSQL_PLUGIN_IMPORT PSI *PSI_server;
C_MODE_END C_MODE_END
...@@ -194,12 +194,12 @@ various file I/O operations with performance schema. ...@@ -194,12 +194,12 @@ various file I/O operations with performance schema.
used to register file creation, opening, closing and renaming. used to register file creation, opening, closing and renaming.
2) register_pfs_file_io_begin() and register_pfs_file_io_end() are 2) register_pfs_file_io_begin() and register_pfs_file_io_end() are
used to register actual file read, write and flush */ used to register actual file read, write and flush */
# define register_pfs_file_open_begin(locker, key, op, name, \ # define register_pfs_file_open_begin(state, locker, key, op, name, \
src_file, src_line) \ src_file, src_line) \
do { \ do { \
if (PSI_server) { \ if (PSI_server) { \
locker = PSI_server->get_thread_file_name_locker( \ locker = PSI_server->get_thread_file_name_locker( \
key, op, name, &locker); \ state, key, op, name, &locker); \
if (locker) { \ if (locker) { \
PSI_server->start_file_open_wait( \ PSI_server->start_file_open_wait( \
locker, src_file, src_line); \ locker, src_file, src_line); \
...@@ -215,12 +215,12 @@ do { \ ...@@ -215,12 +215,12 @@ do { \
} \ } \
} while (0) } while (0)
# define register_pfs_file_io_begin(locker, file, count, op, \ # define register_pfs_file_io_begin(state, locker, file, count, op, \
src_file, src_line) \ src_file, src_line) \
do { \ do { \
if (PSI_server) { \ if (PSI_server) { \
locker = PSI_server->get_thread_file_descriptor_locker( \ locker = PSI_server->get_thread_file_descriptor_locker( \
file, op); \ state, file, op); \
if (locker) { \ if (locker) { \
PSI_server->start_file_wait( \ PSI_server->start_file_wait( \
locker, count, src_file, src_line); \ locker, count, src_file, src_line); \
......
...@@ -55,9 +55,10 @@ pfs_os_file_create_simple_func( ...@@ -55,9 +55,10 @@ pfs_os_file_create_simple_func(
{ {
os_file_t file; os_file_t file;
struct PSI_file_locker* locker = NULL; struct PSI_file_locker* locker = NULL;
PSI_file_locker_state state;
/* register a file open or creation depending on "create_mode" */ /* register a file open or creation depending on "create_mode" */
register_pfs_file_open_begin(locker, key, register_pfs_file_open_begin(&state, locker, key,
((create_mode == OS_FILE_CREATE) ((create_mode == OS_FILE_CREATE)
? PSI_FILE_CREATE ? PSI_FILE_CREATE
: PSI_FILE_OPEN), : PSI_FILE_OPEN),
...@@ -101,9 +102,10 @@ pfs_os_file_create_simple_no_error_handling_func( ...@@ -101,9 +102,10 @@ pfs_os_file_create_simple_no_error_handling_func(
{ {
os_file_t file; os_file_t file;
struct PSI_file_locker* locker = NULL; struct PSI_file_locker* locker = NULL;
PSI_file_locker_state state;
/* register a file open or creation depending on "create_mode" */ /* register a file open or creation depending on "create_mode" */
register_pfs_file_open_begin(locker, key, register_pfs_file_open_begin(&state, locker, key,
((create_mode == OS_FILE_CREATE) ((create_mode == OS_FILE_CREATE)
? PSI_FILE_CREATE ? PSI_FILE_CREATE
: PSI_FILE_OPEN), : PSI_FILE_OPEN),
...@@ -153,9 +155,10 @@ pfs_os_file_create_func( ...@@ -153,9 +155,10 @@ pfs_os_file_create_func(
{ {
os_file_t file; os_file_t file;
struct PSI_file_locker* locker = NULL; struct PSI_file_locker* locker = NULL;
PSI_file_locker_state state;
/* register a file open or creation depending on "create_mode" */ /* register a file open or creation depending on "create_mode" */
register_pfs_file_open_begin(locker, key, register_pfs_file_open_begin(&state, locker, key,
((create_mode == OS_FILE_CREATE) ((create_mode == OS_FILE_CREATE)
? PSI_FILE_CREATE ? PSI_FILE_CREATE
: PSI_FILE_OPEN), : PSI_FILE_OPEN),
...@@ -183,9 +186,10 @@ pfs_os_file_close_func( ...@@ -183,9 +186,10 @@ pfs_os_file_close_func(
{ {
ibool result; ibool result;
struct PSI_file_locker* locker = NULL; struct PSI_file_locker* locker = NULL;
PSI_file_locker_state state;
/* register the file close */ /* register the file close */
register_pfs_file_io_begin(locker, file, 0, PSI_FILE_CLOSE, register_pfs_file_io_begin(&state, locker, file, 0, PSI_FILE_CLOSE,
src_file, src_line); src_file, src_line);
result = os_file_close_func(file); result = os_file_close_func(file);
...@@ -230,9 +234,10 @@ pfs_os_aio_func( ...@@ -230,9 +234,10 @@ pfs_os_aio_func(
{ {
ibool result; ibool result;
struct PSI_file_locker* locker = NULL; struct PSI_file_locker* locker = NULL;
PSI_file_locker_state state;
/* Register the read or write I/O depending on "type" */ /* Register the read or write I/O depending on "type" */
register_pfs_file_io_begin(locker, file, n, register_pfs_file_io_begin(&state, locker, file, n,
(type == OS_FILE_WRITE) (type == OS_FILE_WRITE)
? PSI_FILE_WRITE ? PSI_FILE_WRITE
: PSI_FILE_READ, : PSI_FILE_READ,
...@@ -268,8 +273,9 @@ pfs_os_file_read_func( ...@@ -268,8 +273,9 @@ pfs_os_file_read_func(
{ {
ibool result; ibool result;
struct PSI_file_locker* locker = NULL; struct PSI_file_locker* locker = NULL;
PSI_file_locker_state state;
register_pfs_file_io_begin(locker, file, n, PSI_FILE_READ, register_pfs_file_io_begin(&state, locker, file, n, PSI_FILE_READ,
src_file, src_line); src_file, src_line);
result = os_file_read_func(file, buf, offset, offset_high, n); result = os_file_read_func(file, buf, offset, offset_high, n);
...@@ -303,8 +309,9 @@ pfs_os_file_read_no_error_handling_func( ...@@ -303,8 +309,9 @@ pfs_os_file_read_no_error_handling_func(
{ {
ibool result; ibool result;
struct PSI_file_locker* locker = NULL; struct PSI_file_locker* locker = NULL;
PSI_file_locker_state state;
register_pfs_file_io_begin(locker, file, n, PSI_FILE_READ, register_pfs_file_io_begin(&state, locker, file, n, PSI_FILE_READ,
src_file, src_line); src_file, src_line);
result = os_file_read_no_error_handling_func(file, buf, offset, result = os_file_read_no_error_handling_func(file, buf, offset,
...@@ -339,8 +346,9 @@ pfs_os_file_write_func( ...@@ -339,8 +346,9 @@ pfs_os_file_write_func(
{ {
ibool result; ibool result;
struct PSI_file_locker* locker = NULL; struct PSI_file_locker* locker = NULL;
PSI_file_locker_state state;
register_pfs_file_io_begin(locker, file, n, PSI_FILE_WRITE, register_pfs_file_io_begin(&state, locker, file, n, PSI_FILE_WRITE,
src_file, src_line); src_file, src_line);
result = os_file_write_func(name, file, buf, offset, offset_high, n); result = os_file_write_func(name, file, buf, offset, offset_high, n);
...@@ -366,8 +374,9 @@ pfs_os_file_flush_func( ...@@ -366,8 +374,9 @@ pfs_os_file_flush_func(
{ {
ibool result; ibool result;
struct PSI_file_locker* locker = NULL; struct PSI_file_locker* locker = NULL;
PSI_file_locker_state state;
register_pfs_file_io_begin(locker, file, 0, PSI_FILE_SYNC, register_pfs_file_io_begin(&state, locker, file, 0, PSI_FILE_SYNC,
src_file, src_line); src_file, src_line);
result = os_file_flush_func(file); result = os_file_flush_func(file);
...@@ -395,8 +404,9 @@ pfs_os_file_rename_func( ...@@ -395,8 +404,9 @@ pfs_os_file_rename_func(
{ {
ibool result; ibool result;
struct PSI_file_locker* locker = NULL; struct PSI_file_locker* locker = NULL;
PSI_file_locker_state state;
register_pfs_file_open_begin(locker, key, PSI_FILE_RENAME, newpath, register_pfs_file_open_begin(&state, locker, key, PSI_FILE_RENAME, newpath,
src_file, src_line); src_file, src_line);
result = os_file_rename_func(oldpath, newpath); result = os_file_rename_func(oldpath, newpath);
......
...@@ -676,11 +676,12 @@ pfs_rw_lock_x_lock_func( ...@@ -676,11 +676,12 @@ pfs_rw_lock_x_lock_func(
ulint line) /*!< in: line where requested */ ulint line) /*!< in: line where requested */
{ {
struct PSI_rwlock_locker* locker = NULL; struct PSI_rwlock_locker* locker = NULL;
PSI_rwlock_locker_state state;
/* Record the entry of rw x lock request in performance schema */ /* Record the entry of rw x lock request in performance schema */
if (UNIV_LIKELY(PSI_server && lock->pfs_psi)) { if (UNIV_LIKELY(PSI_server && lock->pfs_psi)) {
locker = PSI_server->get_thread_rwlock_locker( locker = PSI_server->get_thread_rwlock_locker(
lock->pfs_psi, PSI_RWLOCK_WRITELOCK); &state, lock->pfs_psi, PSI_RWLOCK_WRITELOCK);
if (locker) { if (locker) {
PSI_server->start_rwlock_wrwait(locker, PSI_server->start_rwlock_wrwait(locker,
...@@ -710,12 +711,13 @@ pfs_rw_lock_x_lock_func_nowait( ...@@ -710,12 +711,13 @@ pfs_rw_lock_x_lock_func_nowait(
ulint line) /*!< in: line where requested */ ulint line) /*!< in: line where requested */
{ {
struct PSI_rwlock_locker* locker = NULL; struct PSI_rwlock_locker* locker = NULL;
PSI_rwlock_locker_state state;
ibool ret; ibool ret;
/* Record the entry of rw x lock request in performance schema */ /* Record the entry of rw x lock request in performance schema */
if (UNIV_LIKELY(PSI_server && lock->pfs_psi)) { if (UNIV_LIKELY(PSI_server && lock->pfs_psi)) {
locker = PSI_server->get_thread_rwlock_locker( locker = PSI_server->get_thread_rwlock_locker(
lock->pfs_psi, PSI_RWLOCK_WRITELOCK); &state, lock->pfs_psi, PSI_RWLOCK_WRITELOCK);
if (locker) { if (locker) {
PSI_server->start_rwlock_wrwait(locker, PSI_server->start_rwlock_wrwait(locker,
...@@ -765,11 +767,12 @@ pfs_rw_lock_s_lock_func( ...@@ -765,11 +767,12 @@ pfs_rw_lock_s_lock_func(
ulint line) /*!< in: line where requested */ ulint line) /*!< in: line where requested */
{ {
struct PSI_rwlock_locker* locker = NULL; struct PSI_rwlock_locker* locker = NULL;
PSI_rwlock_locker_state state;
/* Instrumented to inform we are aquiring a shared rwlock */ /* Instrumented to inform we are aquiring a shared rwlock */
if (UNIV_LIKELY(PSI_server && lock->pfs_psi)) { if (UNIV_LIKELY(PSI_server && lock->pfs_psi)) {
locker = PSI_server->get_thread_rwlock_locker( locker = PSI_server->get_thread_rwlock_locker(
lock->pfs_psi, PSI_RWLOCK_READLOCK); &state, lock->pfs_psi, PSI_RWLOCK_READLOCK);
if (locker) { if (locker) {
PSI_server->start_rwlock_rdwait(locker, PSI_server->start_rwlock_rdwait(locker,
file_name, line); file_name, line);
...@@ -800,12 +803,13 @@ pfs_rw_lock_s_lock_low( ...@@ -800,12 +803,13 @@ pfs_rw_lock_s_lock_low(
{ {
struct PSI_rwlock_locker* locker = NULL; struct PSI_rwlock_locker* locker = NULL;
PSI_rwlock_locker_state state;
ibool ret; ibool ret;
/* Instrumented to inform we are aquiring a shared rwlock */ /* Instrumented to inform we are aquiring a shared rwlock */
if (UNIV_LIKELY(PSI_server && lock->pfs_psi)) { if (UNIV_LIKELY(PSI_server && lock->pfs_psi)) {
locker = PSI_server->get_thread_rwlock_locker( locker = PSI_server->get_thread_rwlock_locker(
lock->pfs_psi, PSI_RWLOCK_READLOCK); &state, lock->pfs_psi, PSI_RWLOCK_READLOCK);
if (locker) { if (locker) {
PSI_server->start_rwlock_rdwait(locker, PSI_server->start_rwlock_rdwait(locker,
file_name, line); file_name, line);
...@@ -838,11 +842,7 @@ pfs_rw_lock_x_unlock_func( ...@@ -838,11 +842,7 @@ pfs_rw_lock_x_unlock_func(
{ {
/* Inform performance schema we are unlocking the lock */ /* Inform performance schema we are unlocking the lock */
if (UNIV_LIKELY(PSI_server && lock->pfs_psi)) { if (UNIV_LIKELY(PSI_server && lock->pfs_psi)) {
struct PSI_thread* thread; PSI_server->unlock_rwlock(lock->pfs_psi);
thread = PSI_server->get_thread();
if (thread) {
PSI_server->unlock_rwlock(thread, lock->pfs_psi);
}
} }
rw_lock_x_unlock_func( rw_lock_x_unlock_func(
...@@ -869,11 +869,7 @@ pfs_rw_lock_s_unlock_func( ...@@ -869,11 +869,7 @@ pfs_rw_lock_s_unlock_func(
{ {
/* Inform performance schema we are unlocking the lock */ /* Inform performance schema we are unlocking the lock */
if (UNIV_LIKELY(PSI_server && lock->pfs_psi)) { if (UNIV_LIKELY(PSI_server && lock->pfs_psi)) {
struct PSI_thread* thread; PSI_server->unlock_rwlock(lock->pfs_psi);
thread = PSI_server->get_thread();
if (thread) {
PSI_server->unlock_rwlock(thread, lock->pfs_psi);
}
} }
rw_lock_s_unlock_func( rw_lock_s_unlock_func(
......
...@@ -237,11 +237,12 @@ pfs_mutex_enter_func( ...@@ -237,11 +237,12 @@ pfs_mutex_enter_func(
ulint line) /*!< in: line where locked */ ulint line) /*!< in: line where locked */
{ {
struct PSI_mutex_locker* locker = NULL; struct PSI_mutex_locker* locker = NULL;
PSI_mutex_locker_state state;
int result = 0; int result = 0;
if (UNIV_LIKELY(PSI_server && mutex->pfs_psi)) { if (UNIV_LIKELY(PSI_server && mutex->pfs_psi)) {
locker = PSI_server->get_thread_mutex_locker( locker = PSI_server->get_thread_mutex_locker(
mutex->pfs_psi, PSI_MUTEX_LOCK); &state, mutex->pfs_psi, PSI_MUTEX_LOCK);
if (locker) { if (locker) {
PSI_server->start_mutex_wait(locker, file_name, line); PSI_server->start_mutex_wait(locker, file_name, line);
} }
...@@ -270,11 +271,12 @@ pfs_mutex_enter_nowait_func( ...@@ -270,11 +271,12 @@ pfs_mutex_enter_nowait_func(
{ {
ulint ret; ulint ret;
struct PSI_mutex_locker* locker = NULL; struct PSI_mutex_locker* locker = NULL;
PSI_mutex_locker_state state;
int result = 0; int result = 0;
if (UNIV_LIKELY(PSI_server && mutex->pfs_psi)) { if (UNIV_LIKELY(PSI_server && mutex->pfs_psi)) {
locker = PSI_server->get_thread_mutex_locker( locker = PSI_server->get_thread_mutex_locker(
mutex->pfs_psi, PSI_MUTEX_LOCK); &state, mutex->pfs_psi, PSI_MUTEX_LOCK);
if (locker) { if (locker) {
PSI_server->start_mutex_wait(locker, file_name, line); PSI_server->start_mutex_wait(locker, file_name, line);
} }
...@@ -300,12 +302,7 @@ pfs_mutex_exit_func( ...@@ -300,12 +302,7 @@ pfs_mutex_exit_func(
mutex_t* mutex) /*!< in: pointer to mutex */ mutex_t* mutex) /*!< in: pointer to mutex */
{ {
if (UNIV_LIKELY(PSI_server && mutex->pfs_psi)) { if (UNIV_LIKELY(PSI_server && mutex->pfs_psi)) {
struct PSI_thread* thread; PSI_server->unlock_mutex(mutex->pfs_psi);
thread = PSI_server->get_thread();
if (thread) {
PSI_server->unlock_mutex(thread, mutex->pfs_psi);
}
} }
mutex_exit_func(mutex); mutex_exit_func(mutex);
......
...@@ -2165,7 +2165,8 @@ row_merge_file_create( ...@@ -2165,7 +2165,8 @@ row_merge_file_create(
file APIs, add instrumentation to register with file APIs, add instrumentation to register with
performance schema */ performance schema */
struct PSI_file_locker* locker = NULL; struct PSI_file_locker* locker = NULL;
register_pfs_file_open_begin(locker, innodb_file_temp_key, PSI_file_locker_state state;
register_pfs_file_open_begin(&state, locker, innodb_file_temp_key,
PSI_FILE_OPEN, PSI_FILE_OPEN,
"Innodb Merge Temp File", "Innodb Merge Temp File",
__FILE__, __LINE__); __FILE__, __LINE__);
...@@ -2188,7 +2189,8 @@ row_merge_file_destroy( ...@@ -2188,7 +2189,8 @@ row_merge_file_destroy(
{ {
#ifdef UNIV_PFS_IO #ifdef UNIV_PFS_IO
struct PSI_file_locker* locker = NULL; struct PSI_file_locker* locker = NULL;
register_pfs_file_io_begin(locker, merge_file->fd, 0, PSI_FILE_CLOSE, PSI_file_locker_state state;
register_pfs_file_io_begin(&state, locker, merge_file->fd, 0, PSI_FILE_CLOSE,
__FILE__, __LINE__); __FILE__, __LINE__);
#endif #endif
if (merge_file->fd != -1) { if (merge_file->fd != -1) {
......
...@@ -1093,7 +1093,8 @@ static void delete_thread_v1(PSI_thread *thread) ...@@ -1093,7 +1093,8 @@ static void delete_thread_v1(PSI_thread *thread)
} }
static PSI_mutex_locker* static PSI_mutex_locker*
get_thread_mutex_locker_v1(PSI_mutex *mutex, PSI_mutex_operation op) get_thread_mutex_locker_v1(PSI_mutex_locker_state *state,
PSI_mutex *mutex, PSI_mutex_operation op)
{ {
PFS_mutex *pfs_mutex= reinterpret_cast<PFS_mutex*> (mutex); PFS_mutex *pfs_mutex= reinterpret_cast<PFS_mutex*> (mutex);
DBUG_ASSERT((int) op >= 0); DBUG_ASSERT((int) op >= 0);
...@@ -1138,7 +1139,8 @@ get_thread_mutex_locker_v1(PSI_mutex *mutex, PSI_mutex_operation op) ...@@ -1138,7 +1139,8 @@ get_thread_mutex_locker_v1(PSI_mutex *mutex, PSI_mutex_operation op)
} }
static PSI_rwlock_locker* static PSI_rwlock_locker*
get_thread_rwlock_locker_v1(PSI_rwlock *rwlock, PSI_rwlock_operation op) get_thread_rwlock_locker_v1(PSI_rwlock_locker_state *state,
PSI_rwlock *rwlock, PSI_rwlock_operation op)
{ {
PFS_rwlock *pfs_rwlock= reinterpret_cast<PFS_rwlock*> (rwlock); PFS_rwlock *pfs_rwlock= reinterpret_cast<PFS_rwlock*> (rwlock);
DBUG_ASSERT(static_cast<int> (op) >= 0); DBUG_ASSERT(static_cast<int> (op) >= 0);
...@@ -1184,7 +1186,8 @@ get_thread_rwlock_locker_v1(PSI_rwlock *rwlock, PSI_rwlock_operation op) ...@@ -1184,7 +1186,8 @@ get_thread_rwlock_locker_v1(PSI_rwlock *rwlock, PSI_rwlock_operation op)
} }
static PSI_cond_locker* static PSI_cond_locker*
get_thread_cond_locker_v1(PSI_cond *cond, PSI_mutex * /* unused: mutex */, get_thread_cond_locker_v1(PSI_cond_locker_state *state,
PSI_cond *cond, PSI_mutex * /* unused: mutex */,
PSI_cond_operation op) PSI_cond_operation op)
{ {
/* /*
...@@ -1242,7 +1245,8 @@ get_thread_cond_locker_v1(PSI_cond *cond, PSI_mutex * /* unused: mutex */, ...@@ -1242,7 +1245,8 @@ get_thread_cond_locker_v1(PSI_cond *cond, PSI_mutex * /* unused: mutex */,
} }
static PSI_table_locker* static PSI_table_locker*
get_thread_table_locker_v1(PSI_table *table) get_thread_table_locker_v1(PSI_table_locker_state *state,
PSI_table *table)
{ {
PFS_table *pfs_table= reinterpret_cast<PFS_table*> (table); PFS_table *pfs_table= reinterpret_cast<PFS_table*> (table);
DBUG_ASSERT(pfs_table != NULL); DBUG_ASSERT(pfs_table != NULL);
...@@ -1284,7 +1288,8 @@ get_thread_table_locker_v1(PSI_table *table) ...@@ -1284,7 +1288,8 @@ get_thread_table_locker_v1(PSI_table *table)
} }
static PSI_file_locker* static PSI_file_locker*
get_thread_file_name_locker_v1(PSI_file_key key, get_thread_file_name_locker_v1(PSI_file_locker_state *state,
PSI_file_key key,
PSI_file_operation op, PSI_file_operation op,
const char *name, const void *identity) const char *name, const void *identity)
{ {
...@@ -1341,7 +1346,8 @@ get_thread_file_name_locker_v1(PSI_file_key key, ...@@ -1341,7 +1346,8 @@ get_thread_file_name_locker_v1(PSI_file_key key,
} }
static PSI_file_locker* static PSI_file_locker*
get_thread_file_stream_locker_v1(PSI_file *file, PSI_file_operation op) get_thread_file_stream_locker_v1(PSI_file_locker_state *state,
PSI_file *file, PSI_file_operation op)
{ {
PFS_file *pfs_file= reinterpret_cast<PFS_file*> (file); PFS_file *pfs_file= reinterpret_cast<PFS_file*> (file);
...@@ -1392,7 +1398,8 @@ get_thread_file_stream_locker_v1(PSI_file *file, PSI_file_operation op) ...@@ -1392,7 +1398,8 @@ get_thread_file_stream_locker_v1(PSI_file *file, PSI_file_operation op)
} }
static PSI_file_locker* static PSI_file_locker*
get_thread_file_descriptor_locker_v1(File file, PSI_file_operation op) get_thread_file_descriptor_locker_v1(PSI_file_locker_state *state,
File file, PSI_file_operation op)
{ {
int index= static_cast<int> (file); int index= static_cast<int> (file);
...@@ -1462,7 +1469,7 @@ get_thread_file_descriptor_locker_v1(File file, PSI_file_operation op) ...@@ -1462,7 +1469,7 @@ get_thread_file_descriptor_locker_v1(File file, PSI_file_operation op)
return NULL; return NULL;
} }
static void unlock_mutex_v1(PSI_thread * thread, PSI_mutex *mutex) static void unlock_mutex_v1(PSI_mutex *mutex)
{ {
PFS_mutex *pfs_mutex= reinterpret_cast<PFS_mutex*> (mutex); PFS_mutex *pfs_mutex= reinterpret_cast<PFS_mutex*> (mutex);
DBUG_ASSERT(pfs_mutex != NULL); DBUG_ASSERT(pfs_mutex != NULL);
...@@ -1501,7 +1508,7 @@ static void unlock_mutex_v1(PSI_thread * thread, PSI_mutex *mutex) ...@@ -1501,7 +1508,7 @@ static void unlock_mutex_v1(PSI_thread * thread, PSI_mutex *mutex)
#endif #endif
} }
static void unlock_rwlock_v1(PSI_thread *thread, PSI_rwlock *rwlock) static void unlock_rwlock_v1(PSI_rwlock *rwlock)
{ {
PFS_rwlock *pfs_rwlock= reinterpret_cast<PFS_rwlock*> (rwlock); PFS_rwlock *pfs_rwlock= reinterpret_cast<PFS_rwlock*> (rwlock);
DBUG_ASSERT(pfs_rwlock != NULL); DBUG_ASSERT(pfs_rwlock != NULL);
...@@ -1577,7 +1584,7 @@ static void unlock_rwlock_v1(PSI_thread *thread, PSI_rwlock *rwlock) ...@@ -1577,7 +1584,7 @@ static void unlock_rwlock_v1(PSI_thread *thread, PSI_rwlock *rwlock)
#endif #endif
} }
static void signal_cond_v1(PSI_thread *thread, PSI_cond* cond) static void signal_cond_v1(PSI_cond* cond)
{ {
PFS_cond *pfs_cond= reinterpret_cast<PFS_cond*> (cond); PFS_cond *pfs_cond= reinterpret_cast<PFS_cond*> (cond);
DBUG_ASSERT(pfs_cond != NULL); DBUG_ASSERT(pfs_cond != NULL);
...@@ -1585,7 +1592,7 @@ static void signal_cond_v1(PSI_thread *thread, PSI_cond* cond) ...@@ -1585,7 +1592,7 @@ static void signal_cond_v1(PSI_thread *thread, PSI_cond* cond)
pfs_cond->m_cond_stat.m_signal_count++; pfs_cond->m_cond_stat.m_signal_count++;
} }
static void broadcast_cond_v1(PSI_thread *thread, PSI_cond* cond) static void broadcast_cond_v1(PSI_cond* cond)
{ {
PFS_cond *pfs_cond= reinterpret_cast<PFS_cond*> (cond); PFS_cond *pfs_cond= reinterpret_cast<PFS_cond*> (cond);
DBUG_ASSERT(pfs_cond != NULL); DBUG_ASSERT(pfs_cond != NULL);
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment