summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/mysql/thread_pool_priv.h18
-rw-r--r--sql/scheduler.cc10
-rw-r--r--sql/scheduler.h8
3 files changed, 30 insertions, 6 deletions
diff --git a/include/mysql/thread_pool_priv.h b/include/mysql/thread_pool_priv.h
index 555d5fb0e7b..9bda377be13 100644
--- a/include/mysql/thread_pool_priv.h
+++ b/include/mysql/thread_pool_priv.h
@@ -34,11 +34,27 @@
*/
#define MYSQL_SERVER 1
#include <sql_class.h>
-#include <scheduler.h>
#include <debug_sync.h>
#include <sql_profile.h>
#include <table.h>
+struct scheduler_functions
+{
+ uint max_threads;
+ bool (*init)(void);
+ bool (*init_new_connection_thread)(void);
+ void (*add_connection)(THD *thd);
+ void (*thd_wait_begin)(THD *thd, int wait_type);
+ void (*thd_wait_end)(THD *thd);
+ void (*post_kill_notification)(THD *thd);
+ bool (*end_thread)(THD *thd, bool cache_thread);
+ void (*end)(void);
+};
+
+/* Needed to get access to scheduler variables */
+void* thd_get_scheduler(THD *thd);
+PSI_thread* thd_get_psi(THD *thd);
+
/*
The thread pool must be able to execute commands using the connection
state in THD object. This is the main objective of the thread pool to
diff --git a/sql/scheduler.cc b/sql/scheduler.cc
index 4c56e360e0e..d9a98f37e39 100644
--- a/sql/scheduler.cc
+++ b/sql/scheduler.cc
@@ -160,6 +160,16 @@ thd_scheduler::~thd_scheduler()
{
}
+void* thd_get_scheduler(THD *thd)
+{
+ return thd->scheduler.data;
+}
+
+PSI_thread* thd_get_psi(THD *thd)
+{
+ return thd->scheduler.m_psi;
+}
+
static scheduler_functions *saved_thread_scheduler;
static uint saved_thread_handling;
diff --git a/sql/scheduler.h b/sql/scheduler.h
index 72eb56967f1..31ba2ab464a 100644
--- a/sql/scheduler.h
+++ b/sql/scheduler.h
@@ -72,11 +72,6 @@ enum scheduler_types
void one_thread_per_connection_scheduler();
void one_thread_scheduler();
-enum pool_command_op
-{
- NOT_IN_USE_OP= 0, NORMAL_OP= 1, CONNECT_OP, KILL_OP, DIE_OP
-};
-
/*
To be used for pool-of-threads (implemeneted differently on various OSs)
*/
@@ -101,6 +96,9 @@ public:
~thd_scheduler();
};
+void *thd_get_scheduler(THD *thd);
+PSI_thread* thd_get_psi(THD *thd);
+
extern scheduler_functions *thread_scheduler;
#endif