summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikael Ronstrom <mikael@dator8>2011-03-04 13:12:31 +0100
committerMikael Ronstrom <mikael@dator8>2011-03-04 13:12:31 +0100
commitb14adc3921d3f2e30f858a31ae73ecdc65901e54 (patch)
treea7f5ebaca17d2031a07efaa3418357b9b756de46
parent5f24be65270c844ba705de9121a95b3bb048dcc3 (diff)
downloadmariadb-git-b14adc3921d3f2e30f858a31ae73ecdc65901e54.tar.gz
More review fixes
-rw-r--r--include/my_sys.h4
-rw-r--r--include/mysql/plugin_audit.h.pp4
-rw-r--r--include/mysql/plugin_auth.h.pp4
-rw-r--r--include/mysql/plugin_ftparser.h.pp4
-rw-r--r--include/mysql/service_thd_wait.h4
-rw-r--r--sql/item_func.cc8
-rw-r--r--sql/mdl.cc4
-rw-r--r--sql/scheduler.cc3
8 files changed, 19 insertions, 16 deletions
diff --git a/include/my_sys.h b/include/my_sys.h
index ed96abc7711..e13ef1af067 100644
--- a/include/my_sys.h
+++ b/include/my_sys.h
@@ -627,8 +627,8 @@ extern FILE *my_freopen(const char *path, const char *mode, FILE *stream);
extern int my_fclose(FILE *fd,myf MyFlags);
extern File my_fileno(FILE *fd);
extern int my_chsize(File fd,my_off_t newlength, int filler, myf MyFlags);
-void thr_set_sync_wait_callback(void (*before_sync)(void),
- void (*after_sync)(void));
+extern void thr_set_sync_wait_callback(void (*before_sync)(void),
+ void (*after_sync)(void));
extern int my_sync(File fd, myf my_flags);
extern int my_sync_dir(const char *dir_name, myf my_flags);
extern int my_sync_dir_by_file(const char *file_name, myf my_flags);
diff --git a/include/mysql/plugin_audit.h.pp b/include/mysql/plugin_audit.h.pp
index f74078c531f..732503e176a 100644
--- a/include/mysql/plugin_audit.h.pp
+++ b/include/mysql/plugin_audit.h.pp
@@ -46,10 +46,10 @@ typedef enum _thd_wait_type_e {
THD_WAIT_LAST= 11
} thd_wait_type;
extern struct thd_wait_service_st {
- void (*thd_wait_begin_func)(void*, thd_wait_type);
+ void (*thd_wait_begin_func)(void*, int);
void (*thd_wait_end_func)(void*);
} *thd_wait_service;
-void thd_wait_begin(void* thd, thd_wait_type wait_type);
+void thd_wait_begin(void* thd, int wait_type);
void thd_wait_end(void* thd);
#include <mysql/service_thread_scheduler.h>
struct scheduler_functions;
diff --git a/include/mysql/plugin_auth.h.pp b/include/mysql/plugin_auth.h.pp
index aed764ddb51..e65278c518e 100644
--- a/include/mysql/plugin_auth.h.pp
+++ b/include/mysql/plugin_auth.h.pp
@@ -46,10 +46,10 @@ typedef enum _thd_wait_type_e {
THD_WAIT_LAST= 11
} thd_wait_type;
extern struct thd_wait_service_st {
- void (*thd_wait_begin_func)(void*, thd_wait_type);
+ void (*thd_wait_begin_func)(void*, int);
void (*thd_wait_end_func)(void*);
} *thd_wait_service;
-void thd_wait_begin(void* thd, thd_wait_type wait_type);
+void thd_wait_begin(void* thd, int wait_type);
void thd_wait_end(void* thd);
#include <mysql/service_thread_scheduler.h>
struct scheduler_functions;
diff --git a/include/mysql/plugin_ftparser.h.pp b/include/mysql/plugin_ftparser.h.pp
index f3ca2070e60..c29eac45b19 100644
--- a/include/mysql/plugin_ftparser.h.pp
+++ b/include/mysql/plugin_ftparser.h.pp
@@ -46,10 +46,10 @@ typedef enum _thd_wait_type_e {
THD_WAIT_LAST= 11
} thd_wait_type;
extern struct thd_wait_service_st {
- void (*thd_wait_begin_func)(void*, thd_wait_type);
+ void (*thd_wait_begin_func)(void*, int);
void (*thd_wait_end_func)(void*);
} *thd_wait_service;
-void thd_wait_begin(void* thd, thd_wait_type wait_type);
+void thd_wait_begin(void* thd, int wait_type);
void thd_wait_end(void* thd);
#include <mysql/service_thread_scheduler.h>
struct scheduler_functions;
diff --git a/include/mysql/service_thd_wait.h b/include/mysql/service_thd_wait.h
index a7ce2dbf501..f5d2a75f5fc 100644
--- a/include/mysql/service_thd_wait.h
+++ b/include/mysql/service_thd_wait.h
@@ -78,7 +78,7 @@ typedef enum _thd_wait_type_e {
} thd_wait_type;
extern struct thd_wait_service_st {
- void (*thd_wait_begin_func)(MYSQL_THD, thd_wait_type);
+ void (*thd_wait_begin_func)(MYSQL_THD, int);
void (*thd_wait_end_func)(MYSQL_THD);
} *thd_wait_service;
@@ -90,7 +90,7 @@ extern struct thd_wait_service_st {
#else
-void thd_wait_begin(MYSQL_THD thd, thd_wait_type wait_type);
+void thd_wait_begin(MYSQL_THD thd, int wait_type);
void thd_wait_end(MYSQL_THD thd);
#endif
diff --git a/sql/item_func.cc b/sql/item_func.cc
index 9195cf4f8c7..a149bb7f955 100644
--- a/sql/item_func.cc
+++ b/sql/item_func.cc
@@ -3877,12 +3877,11 @@ longlong Item_func_get_lock::val_int()
timed_cond.set_timeout(timeout * ULL(1000000000));
error= 0;
+ thd_wait_begin(thd, THD_WAIT_USER_LOCK);
while (ull->locked && !thd->killed)
{
DBUG_PRINT("info", ("waiting on lock"));
- thd_wait_begin(thd, THD_WAIT_USER_LOCK);
error= timed_cond.wait(&ull->cond, &LOCK_user_locks);
- thd_wait_end(thd);
if (error == ETIMEDOUT || error == ETIME)
{
DBUG_PRINT("info", ("lock wait timeout"));
@@ -3890,6 +3889,7 @@ longlong Item_func_get_lock::val_int()
}
error= 0;
}
+ thd_wait_end(thd);
if (ull->locked)
{
@@ -4107,15 +4107,15 @@ longlong Item_func_sleep::val_int()
thd->mysys_var->current_cond= &cond;
error= 0;
+ thd_wait_begin(thd, THD_WAIT_SLEEP);
while (!thd->killed)
{
- thd_wait_begin(thd, THD_WAIT_SLEEP);
error= timed_cond.wait(&cond, &LOCK_user_locks);
- thd_wait_end(thd);
if (error == ETIMEDOUT || error == ETIME)
break;
error= 0;
}
+ thd_wait_end(thd);
thd_proc_info(thd, 0);
mysql_mutex_unlock(&LOCK_user_locks);
mysql_mutex_lock(&thd->mysys_var->mutex);
diff --git a/sql/mdl.cc b/sql/mdl.cc
index 6cab1238b43..21410db2d22 100644
--- a/sql/mdl.cc
+++ b/sql/mdl.cc
@@ -975,14 +975,14 @@ MDL_wait::timed_wait(THD *thd, struct timespec *abs_timeout,
old_msg= thd_enter_cond(thd, &m_COND_wait_status, &m_LOCK_wait_status,
wait_state_name);
+ thd_wait_begin(thd, THD_WAIT_META_DATA_LOCK);
while (!m_wait_status && !thd_killed(thd) &&
wait_result != ETIMEDOUT && wait_result != ETIME)
{
- thd_wait_begin(thd, THD_WAIT_META_DATA_LOCK);
wait_result= mysql_cond_timedwait(&m_COND_wait_status, &m_LOCK_wait_status,
abs_timeout);
- thd_wait_end(thd);
}
+ thd_wait_end(thd);
if (m_wait_status == EMPTY)
{
diff --git a/sql/scheduler.cc b/sql/scheduler.cc
index 328ad45b4b8..a3848e20be5 100644
--- a/sql/scheduler.cc
+++ b/sql/scheduler.cc
@@ -80,6 +80,8 @@ scheduler_functions *thread_scheduler= NULL;
*/
/**@{*/
+extern "C"
+{
static void scheduler_wait_lock_begin(void) {
MYSQL_CALLBACK(thread_scheduler,
thd_wait_begin, (current_thd, THD_WAIT_TABLE_LOCK));
@@ -97,6 +99,7 @@ static void scheduler_wait_sync_begin(void) {
static void scheduler_wait_sync_end(void) {
MYSQL_CALLBACK(thread_scheduler, thd_wait_end, (current_thd));
}
+};
/**@}*/
/**