From ac6c1d7c59fcb07190d6e2ab69ff704b70b4c21c Mon Sep 17 00:00:00 2001 From: Sebastian Wilhelmi Date: Tue, 22 Feb 2000 13:11:24 +0000 Subject: [PATCH] check for sysconf (_SC_THREAD_STACK_MIN), which returns the minimal stack 2000-02-22 Sebastian Wilhelmi * 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 . --- gthread/ChangeLog | 6 ++++++ gthread/gthread-impl.c | 4 ++-- gthread/gthread-posix.c | 11 +++++++++++ gthread/gthread-solaris.c | 10 ++++++++++ 4 files changed, 29 insertions(+), 2 deletions(-) diff --git a/gthread/ChangeLog b/gthread/ChangeLog index b0d99da..1a6740d 100644 --- a/gthread/ChangeLog +++ b/gthread/ChangeLog @@ -1,3 +1,9 @@ +2000-02-22 Sebastian Wilhelmi + + * 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 . + 1999-11-16 Sebastian Wilhelmi * gthread-posix.c, gthread-solaris.c: Changed the prototype of diff --git a/gthread/gthread-impl.c b/gthread/gthread-impl.c index f353c46..2704837 100644 --- a/gthread/gthread-impl.c +++ b/gthread/gthread-impl.c @@ -103,8 +103,8 @@ g_thread_init (GThreadFunctions* init) } /* 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) diff --git a/gthread/gthread-posix.c b/gthread/gthread-posix.c index b785a71..e68ebbf 100644 --- a/gthread/gthread-posix.c +++ b/gthread/gthread-posix.c @@ -37,6 +37,9 @@ #ifdef HAVE_SYS_TIME_H #include #endif +#ifdef HAVE_UNISTD_H +#include +#endif #define posix_print_error( name, num ) \ g_error( "file %s: line %d (%s): error %s during %s", \ @@ -64,12 +67,17 @@ # 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 * @@ -228,7 +236,10 @@ g_thread_create_posix_impl (GThreadFunc thread_func, #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 diff --git a/gthread/gthread-solaris.c b/gthread/gthread-solaris.c index 43a38ed..4de8180 100644 --- a/gthread/gthread-solaris.c +++ b/gthread/gthread-solaris.c @@ -35,6 +35,9 @@ #include #include #include +#ifdef HAVE_UNISTD_H +#include +#endif #define solaris_print_error( name, num ) \ g_error( "file %s: line %d (%s): error %s during %s", \ @@ -46,12 +49,17 @@ 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 * @@ -193,6 +201,8 @@ g_thread_create_solaris_impl (GThreadFunc thread_func, 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)); -- 2.7.4