Commit 38dec6c8 authored by bell@sanja.is.com.ua's avatar bell@sanja.is.com.ua

Merge sanja.is.com.ua:/home/bell/mysql/bk/mysql-5.0

into  sanja.is.com.ua:/home/bell/mysql/bk/work-owner7-5.0
parents b5d2e345 27cb3d93
...@@ -127,7 +127,7 @@ void Listener_thread::run() ...@@ -127,7 +127,7 @@ void Listener_thread::run()
fd_set read_fds_arg= read_fds; fd_set read_fds_arg= read_fds;
/* /*
We should reintialize timer as on linux it is modified We should reintialize timer as on linux it is modified
to reflect amout of time not slept. to reflect amount of time not slept.
*/ */
tv.tv_sec= 0; tv.tv_sec= 0;
tv.tv_usec= 100000; tv.tv_usec= 100000;
...@@ -362,12 +362,13 @@ void Listener_thread::handle_new_mysql_connection(Vio *vio) ...@@ -362,12 +362,13 @@ void Listener_thread::handle_new_mysql_connection(Vio *vio)
pthread_attr_t mysql_thd_attr; pthread_attr_t mysql_thd_attr;
pthread_attr_init(&mysql_thd_attr); pthread_attr_init(&mysql_thd_attr);
pthread_attr_setdetachstate(&mysql_thd_attr, PTHREAD_CREATE_DETACHED); pthread_attr_setdetachstate(&mysql_thd_attr, PTHREAD_CREATE_DETACHED);
if (pthread_create(&mysql_thd_id, &mysql_thd_attr, mysql_connection, if (set_stacksize_n_create_thread(&mysql_thd_id, &mysql_thd_attr,
mysql_thread_args)) mysql_connection, mysql_thread_args))
{ {
delete mysql_thread_args; delete mysql_thread_args;
vio_delete(vio); vio_delete(vio);
log_error("handle_one_mysql_connection(): pthread_create(mysql) failed"); log_error("handle_one_mysql_connection():"
"set_stacksize_n_create_thread(mysql) failed");
} }
pthread_attr_destroy(&mysql_thd_attr); pthread_attr_destroy(&mysql_thd_attr);
} }
......
...@@ -162,12 +162,12 @@ void manager(const Options &options) ...@@ -162,12 +162,12 @@ void manager(const Options &options)
pthread_attr_init(&listener_thd_attr); pthread_attr_init(&listener_thd_attr);
pthread_attr_setdetachstate(&listener_thd_attr, PTHREAD_CREATE_DETACHED); pthread_attr_setdetachstate(&listener_thd_attr, PTHREAD_CREATE_DETACHED);
rc= pthread_create(&listener_thd_id, &listener_thd_attr, listener, rc= set_stacksize_n_create_thread(&listener_thd_id, &listener_thd_attr,
&listener_args); listener, &listener_args);
pthread_attr_destroy(&listener_thd_attr); pthread_attr_destroy(&listener_thd_attr);
if (rc) if (rc)
{ {
log_error("manager(): pthread_create(listener) failed"); log_error("manager(): set_stacksize_n_create_thread(listener) failed");
goto err; goto err;
} }
...@@ -187,12 +187,12 @@ void manager(const Options &options) ...@@ -187,12 +187,12 @@ void manager(const Options &options)
pthread_attr_init(&guardian_thd_attr); pthread_attr_init(&guardian_thd_attr);
pthread_attr_setdetachstate(&guardian_thd_attr, PTHREAD_CREATE_DETACHED); pthread_attr_setdetachstate(&guardian_thd_attr, PTHREAD_CREATE_DETACHED);
rc= pthread_create(&guardian_thd_id, &guardian_thd_attr, guardian, rc= set_stacksize_n_create_thread(&guardian_thd_id, &guardian_thd_attr,
&guardian_thread); guardian, &guardian_thread);
pthread_attr_destroy(&guardian_thd_attr); pthread_attr_destroy(&guardian_thd_attr);
if (rc) if (rc)
{ {
log_error("manager(): pthread_create(guardian) failed"); log_error("manager(): set_stacksize_n_create_thread(guardian) failed");
goto err; goto err;
} }
......
...@@ -18,6 +18,17 @@ ...@@ -18,6 +18,17 @@
#include "priv.h" #include "priv.h"
#include "portability.h" #include "portability.h"
#if defined(__ia64__) || defined(__ia64)
/*
We can live with 32K, but reserve 64K. Just to be safe.
On ia64 we need to reserve double of the size.
*/
#define IM_THREAD_STACK_SIZE (128*1024L)
#else
#define IM_THREAD_STACK_SIZE (64*1024)
#endif
/* the pid of the manager process (of the signal thread on the LinuxThreads) */ /* the pid of the manager process (of the signal thread on the LinuxThreads) */
pid_t manager_pid; pid_t manager_pid;
...@@ -52,3 +63,27 @@ unsigned int test_flags= 0; ...@@ -52,3 +63,27 @@ unsigned int test_flags= 0;
unsigned long bytes_sent = 0L, bytes_received = 0L; unsigned long bytes_sent = 0L, bytes_received = 0L;
unsigned long mysqld_net_retry_count = 10L; unsigned long mysqld_net_retry_count = 10L;
unsigned long open_files_limit; unsigned long open_files_limit;
/*
Change the stack size and start a thread. Return an error if either
pthread_attr_setstacksize or pthread_create fails.
Arguments are the same as for pthread_create().
*/
int set_stacksize_n_create_thread(pthread_t *thread, pthread_attr_t *attr,
void *(*start_routine)(void *), void *arg)
{
int rc;
/*
Set stack size to be safe on the platforms with too small
default thread stack.
*/
rc= pthread_attr_setstacksize(attr,
(size_t) (PTHREAD_STACK_MIN +
IM_THREAD_STACK_SIZE));
if (!rc)
rc= pthread_create(thread, attr, start_routine, arg);
return rc;
}
...@@ -80,4 +80,8 @@ extern unsigned long bytes_sent, bytes_received; ...@@ -80,4 +80,8 @@ extern unsigned long bytes_sent, bytes_received;
extern unsigned long mysqld_net_retry_count; extern unsigned long mysqld_net_retry_count;
extern unsigned long open_files_limit; extern unsigned long open_files_limit;
int set_stacksize_n_create_thread(pthread_t *thread, pthread_attr_t *attr,
void *(*start_routine)(void *), void *arg);
#endif // INCLUDES_MYSQL_INSTANCE_MANAGER_PRIV_H #endif // INCLUDES_MYSQL_INSTANCE_MANAGER_PRIV_H
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