diff options
-rw-r--r-- | include/mysql/thread_pool_priv.h | 18 | ||||
-rw-r--r-- | sql/scheduler.cc | 10 | ||||
-rw-r--r-- | sql/scheduler.h | 8 |
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 |