+2000-02-22 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
+
+ * gthread-posix.c, gthread-solaris.c: check for sysconf
+ (_SC_THREAD_STACK_MIN), which returns the minimal stack size for
+ new threads. Patch from Soeren Sandmann <sandmann@daimi.au.dk>.
+
1999-11-16 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* gthread-posix.c, gthread-solaris.c: Changed the prototype of
}
/* now do any initialization stuff required by the implementation,
- but only if called with a NULL argument, of course. Otherwise it's
- up to the user to do do. */
+ * but only if called with a NULL argument, of course. Otherwise
+ * it's up to the user to do so. */
#ifdef HAVE_G_THREAD_IMPL_INIT
if (g_thread_use_default_impl)
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
#define posix_print_error( name, num ) \
g_error( "file %s: line %d (%s): error %s during %s", \
# error This should not happen. Contact the GLib team.
#endif
+gulong g_thread_min_stack_size = 0;
+
#define HAVE_G_THREAD_IMPL_INIT
static void
g_thread_impl_init()
{
g_thread_min_priority = POSIX_MIN_PRIORITY;
g_thread_max_priority = POSIX_MAX_PRIORITY;
+#ifdef _SC_THREAD_STACK_MIN
+ g_thread_min_stack_size = MAX (sysconf (_SC_THREAD_STACK_MIN), 0);
+#endif /* _SC_THREAD_STACK_MIN */
}
static GMutex *
#ifdef HAVE_PTHREAD_ATTR_SETSTACKSIZE
if (stack_size)
+ {
+ stack_size = MAX (g_thread_min_stack_size, stack_size);
posix_check_for_error (pthread_attr_setstacksize (&attr, stack_size));
+ }
#endif /* HAVE_PTHREAD_ATTR_SETSTACKSIZE */
#ifdef PTHREAD_SCOPE_SYSTEM
#include <errno.h>
#include <stdlib.h>
#include <stdio.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
#define solaris_print_error( name, num ) \
g_error( "file %s: line %d (%s): error %s during %s", \
if( error ) { solaris_print_error( what, error ); } \
}G_STMT_END
+gulong g_thread_min_stack_size = 0;
+
#define HAVE_G_THREAD_IMPL_INIT
static void
g_thread_impl_init()
{
g_thread_min_priority = 0;
g_thread_max_priority = 127;
+#ifdef _SC_THREAD_STACK_MIN
+ g_thread_min_stack_size = MAX (sysconf (_SC_THREAD_STACK_MIN), 0);
+#endif /* _SC_THREAD_STACK_MIN */
}
static GMutex *
g_return_if_fail (thread_func);
+ stack_size = MAX (g_thread_min_stack_size, stack_size);
+
solaris_check_for_error (thr_create (NULL, stack_size,
(void* (*)(void*))thread_func,
arg, flags, thread));