Commit 387970ae authored by unknown's avatar unknown
Browse files

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 ab2389ef 22234024
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -127,7 +127,7 @@ void Listener_thread::run()
    fd_set read_fds_arg= read_fds;
    /*
      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_usec= 100000;
@@ -362,12 +362,13 @@ void Listener_thread::handle_new_mysql_connection(Vio *vio)
    pthread_attr_t mysql_thd_attr;
    pthread_attr_init(&mysql_thd_attr);
    pthread_attr_setdetachstate(&mysql_thd_attr, PTHREAD_CREATE_DETACHED);
    if (pthread_create(&mysql_thd_id, &mysql_thd_attr, mysql_connection,
                       mysql_thread_args))
    if (set_stacksize_n_create_thread(&mysql_thd_id, &mysql_thd_attr,
                                      mysql_connection, mysql_thread_args))
    {
      delete mysql_thread_args;
      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);
  }
+6 −6
Original line number Diff line number Diff line
@@ -162,12 +162,12 @@ void manager(const Options &options)

    pthread_attr_init(&listener_thd_attr);
    pthread_attr_setdetachstate(&listener_thd_attr, PTHREAD_CREATE_DETACHED);
    rc= pthread_create(&listener_thd_id, &listener_thd_attr, listener,
                       &listener_args);
    rc= set_stacksize_n_create_thread(&listener_thd_id, &listener_thd_attr,
                                      listener, &listener_args);
    pthread_attr_destroy(&listener_thd_attr);
    if (rc)
    {
      log_error("manager(): pthread_create(listener) failed");
      log_error("manager(): set_stacksize_n_create_thread(listener) failed");
      goto err;
    }

@@ -187,12 +187,12 @@ void manager(const Options &options)

    pthread_attr_init(&guardian_thd_attr);
    pthread_attr_setdetachstate(&guardian_thd_attr, PTHREAD_CREATE_DETACHED);
    rc= pthread_create(&guardian_thd_id, &guardian_thd_attr, guardian,
                       &guardian_thread);
    rc= set_stacksize_n_create_thread(&guardian_thd_id, &guardian_thd_attr,
                                      guardian, &guardian_thread);
    pthread_attr_destroy(&guardian_thd_attr);
    if (rc)
    {
      log_error("manager(): pthread_create(guardian) failed");
      log_error("manager(): set_stacksize_n_create_thread(guardian) failed");
      goto err;
    }

+35 −0
Original line number Diff line number Diff line
@@ -18,6 +18,17 @@
#include "priv.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) */
pid_t manager_pid;

@@ -52,3 +63,27 @@ unsigned int test_flags= 0;
unsigned long bytes_sent = 0L, bytes_received = 0L;
unsigned long mysqld_net_retry_count = 10L;
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;
}
+4 −0
Original line number Diff line number Diff line
@@ -80,4 +80,8 @@ extern unsigned long bytes_sent, bytes_received;
extern unsigned long mysqld_net_retry_count;
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