summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/config-netware.h3
-rw-r--r--innobase/os/os0thread.c9
-rw-r--r--netware/mysqld_safe.c42
-rw-r--r--sql/mysqld.cc5
4 files changed, 32 insertions, 27 deletions
diff --git a/include/config-netware.h b/include/config-netware.h
index e07e972ba4b..43ee05e39ee 100644
--- a/include/config-netware.h
+++ b/include/config-netware.h
@@ -92,6 +92,9 @@ extern "C" {
/* On NetWare, stack grows towards lower address*/
#define STACK_DIRECTION -1
+/* On NetWare, we need to set stack size for threads, otherwise default 16K is used */
+#define NW_THD_STACKSIZE 65536
+
/* On NetWare, to fix the problem with the deletion of open files */
#define CANT_DELETE_OPEN_FILES 1
diff --git a/innobase/os/os0thread.c b/innobase/os/os0thread.c
index 59d0fdbd8c9..cb72310f23d 100644
--- a/innobase/os/os0thread.c
+++ b/innobase/os/os0thread.c
@@ -148,6 +148,15 @@ os_thread_create(
exit(1);
}
#endif
+#ifdef __NETWARE__
+ ret = pthread_attr_setstacksize(&attr,
+ (size_t) NW_THD_STACKSIZE);
+ if (ret) {
+ fprintf(stderr,
+ "InnoDB: Error: pthread_attr_setstacksize returned %d\n", ret);
+ exit(1);
+ }
+#endif
os_mutex_enter(os_sync_mutex);
os_thread_count++;
os_mutex_exit(os_sync_mutex);
diff --git a/netware/mysqld_safe.c b/netware/mysqld_safe.c
index dbb49882140..5f65e2f45b7 100644
--- a/netware/mysqld_safe.c
+++ b/netware/mysqld_safe.c
@@ -252,51 +252,39 @@ void finish_defaults()
******************************************************************************/
void read_defaults(arg_list_t *pal)
{
- arg_list_t al;
- char defaults_file[PATH_MAX];
char mydefaults[PATH_MAX];
+ char mydefaults_command[3*PATH_MAX];
char line[PATH_MAX];
FILE *fp;
- // defaults output file
- snprintf(defaults_file, PATH_MAX, "%s/bin/defaults.out", basedir);
- remove(defaults_file);
-
- // mysqladmin file
+ // my_print_defaults file
snprintf(mydefaults, PATH_MAX, "%s/bin/my_print_defaults", basedir);
- // args
- init_args(&al);
- add_arg(&al, mydefaults);
- if (default_option[0]) add_arg(&al, default_option);
- add_arg(&al, "mysqld");
- add_arg(&al, "server");
- add_arg(&al, "mysqld_safe");
- add_arg(&al, "safe_mysqld");
-
- spawn(mydefaults, &al, TRUE, NULL, defaults_file, NULL);
-
- free_args(&al);
-
+ // args to my_print_defaults
+ if (default_option[0])
+ {
+ snprintf(mydefaults_command, 3*PATH_MAX, "%s %s mysqld server mysqld_safe safe_mysqld", mydefaults, default_option);
+ }
+ else
+ {
+ snprintf(mydefaults_command, 3*PATH_MAX, "%s mysqld server mysqld_safe safe_mysqld", mydefaults);
+ }
// gather defaults
- if((fp = fopen(defaults_file, "r")) != NULL)
+ if((fp = popen(mydefaults_command, "r")) != NULL)
{
while(fgets(line, PATH_MAX, fp))
{
char *p;
// remove end-of-line character
- if ((p = strrchr(line, '\n')) != NULL) *p = '\0';
+ if ((p = strrchr(line, '\n')) != NULL)
+ *p = '\0';
// add the option as an argument
add_arg(pal, line);
}
-
- fclose(fp);
+ pclose(fp);
}
-
- // remove file
- remove(defaults_file);
}
/******************************************************************************
diff --git a/sql/mysqld.cc b/sql/mysqld.cc
index f7df7233795..00bcdbf7132 100644
--- a/sql/mysqld.cc
+++ b/sql/mysqld.cc
@@ -2402,6 +2402,11 @@ You should consider changing lower_case_table_names to 1 or 2",
}
}
#endif
+#ifdef __NETWARE__
+ /* Increasing stacksize of threads on NetWare */
+
+ pthread_attr_setstacksize(&connection_attrib, NW_THD_STACKSIZE);
+#endif
if (!(opt_specialflag & SPECIAL_NO_PRIOR))
my_pthread_attr_setprio(&connection_attrib,WAIT_PRIOR);
pthread_attr_setscope(&connection_attrib, PTHREAD_SCOPE_SYSTEM);