mirror of
https://github.com/MariaDB/server.git
synced 2026-05-07 07:35:32 +02:00
merge.
checkpoint. does not compile.
This commit is contained in:
commit
65ca700def
2732 changed files with 867677 additions and 21074 deletions
|
|
@ -27,6 +27,7 @@
|
|||
#include "sql_connect.h" // init_new_connection_handler_thread
|
||||
#include "scheduler.h"
|
||||
#include "sql_callback.h"
|
||||
#include "sql_audit.h"
|
||||
|
||||
/*
|
||||
End connection, in case when we are using 'no-threads'
|
||||
|
|
@ -42,6 +43,7 @@ static bool no_threads_end(THD *thd, bool put_in_cache)
|
|||
static scheduler_functions one_thread_scheduler_functions=
|
||||
{
|
||||
1, // max_threads
|
||||
NULL, NULL,
|
||||
NULL, // init
|
||||
init_new_connection_handler_thread, // init_new_connection_thread
|
||||
#ifndef EMBEDDED_LIBRARY
|
||||
|
|
@ -60,6 +62,7 @@ static scheduler_functions one_thread_scheduler_functions=
|
|||
static scheduler_functions one_thread_per_connection_scheduler_functions=
|
||||
{
|
||||
0, // max_threads
|
||||
NULL, NULL,
|
||||
NULL, // init
|
||||
init_new_connection_handler_thread, // init_new_connection_thread
|
||||
create_thread_to_handle_connection, // add_connection
|
||||
|
|
@ -71,9 +74,6 @@ static scheduler_functions one_thread_per_connection_scheduler_functions=
|
|||
};
|
||||
#endif // EMBEDDED_LIBRARY
|
||||
|
||||
|
||||
scheduler_functions *thread_scheduler= NULL;
|
||||
|
||||
/** @internal
|
||||
Helper functions to allow mysys to call the thread scheduler when
|
||||
waiting for locks.
|
||||
|
|
@ -81,12 +81,16 @@ scheduler_functions *thread_scheduler= NULL;
|
|||
|
||||
/**@{*/
|
||||
static void scheduler_wait_begin(void) {
|
||||
MYSQL_CALLBACK(thread_scheduler,
|
||||
thd_wait_begin, (current_thd, THD_WAIT_ROW_TABLE_LOCK));
|
||||
THD *thd=current_thd;
|
||||
scheduler_functions *func= thd->scheduler;
|
||||
MYSQL_CALLBACK(func,
|
||||
thd_wait_begin, (thd, THD_WAIT_ROW_TABLE_LOCK));
|
||||
}
|
||||
|
||||
static void scheduler_wait_end(void) {
|
||||
MYSQL_CALLBACK(thread_scheduler, thd_wait_end, (current_thd));
|
||||
THD *thd=current_thd;
|
||||
scheduler_functions *func= thd->scheduler;
|
||||
MYSQL_CALLBACK(func, thd_wait_end, (thd));
|
||||
}
|
||||
/**@}*/
|
||||
|
||||
|
|
@ -98,7 +102,8 @@ static void scheduler_wait_end(void) {
|
|||
mysqld.cc, so this init function will always be called.
|
||||
*/
|
||||
static void scheduler_init() {
|
||||
thr_set_lock_wait_callback(scheduler_wait_begin, scheduler_wait_end);
|
||||
mysys_var->scheduler_before_lock_wait= &scheduler_wait_begin;
|
||||
mysys_var->scheduler_after_lock_wait= &scheduler_wait_end;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
@ -106,11 +111,15 @@ static void scheduler_init() {
|
|||
*/
|
||||
|
||||
#ifndef EMBEDDED_LIBRARY
|
||||
void one_thread_per_connection_scheduler()
|
||||
scheduler_functions *one_thread_per_connection_scheduler(
|
||||
ulong *arg_max_connections,
|
||||
uint *arg_connection_count)
|
||||
{
|
||||
scheduler_init();
|
||||
one_thread_per_connection_scheduler_functions.max_threads= max_connections;
|
||||
thread_scheduler= &one_thread_per_connection_scheduler_functions;
|
||||
one_thread_per_connection_scheduler_functions.max_threads= *arg_max_connections + 1;
|
||||
one_thread_per_connection_scheduler_functions.max_connections= arg_max_connections;
|
||||
one_thread_per_connection_scheduler_functions.connection_count= arg_connection_count;
|
||||
return &one_thread_per_connection_scheduler_functions;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
@ -118,10 +127,10 @@ void one_thread_per_connection_scheduler()
|
|||
Initailize scheduler for --thread-handling=no-threads
|
||||
*/
|
||||
|
||||
void one_thread_scheduler()
|
||||
scheduler_functions *one_thread_scheduler()
|
||||
{
|
||||
scheduler_init();
|
||||
thread_scheduler= &one_thread_scheduler_functions;
|
||||
return &one_thread_scheduler_functions;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -148,6 +157,12 @@ thd_scheduler::~thd_scheduler()
|
|||
{
|
||||
}
|
||||
|
||||
/*
|
||||
no pluggable schedulers in mariadb.
|
||||
when we'll want it, we'll do it properly
|
||||
*/
|
||||
#if 0
|
||||
|
||||
static scheduler_functions *saved_thread_scheduler;
|
||||
static uint saved_thread_handling;
|
||||
|
||||
|
|
@ -181,6 +196,13 @@ int my_thread_scheduler_reset()
|
|||
saved_thread_scheduler= 0;
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
extern "C" int my_thread_scheduler_set(scheduler_functions *scheduler)
|
||||
{ return 1; }
|
||||
|
||||
extern "C" int my_thread_scheduler_reset()
|
||||
{ return 1; }
|
||||
#endif
|
||||
|
||||
#warning restore libevent
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue