From 536420a581f9f822cdef0fc460b5176a840f49e5 Mon Sep 17 00:00:00 2001 From: Richard Braun Date: Mon, 3 Sep 2012 20:29:10 +0200 Subject: Allow applications to set the default stack size This change is a temporary hack intended for the Hurd servers. Once Hurd threadvars are replaced with TLS, this commit should be reverted. * pthread/pt-internal.h (__pthread_default_attr): Remove const qualifier. * sysdeps/generic/pt-attr.c (__pthread_default_attr): Likewise. * sysdeps/mach/hurd/pt-sysdep.c (__pthread_stack_default_size): New variable. (init_routine): Set __pthread_default_attr.stacksize if __pthread_stack_default_size exists. --- sysdeps/mach/hurd/pt-sysdep.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'sysdeps/mach') diff --git a/sysdeps/mach/hurd/pt-sysdep.c b/sysdeps/mach/hurd/pt-sysdep.c index f40fee5..882af69 100644 --- a/sysdeps/mach/hurd/pt-sysdep.c +++ b/sysdeps/mach/hurd/pt-sysdep.c @@ -30,6 +30,16 @@ __thread struct __pthread *___pthread_self; +/* Allow programs that know about this library to override the default stack + size. + + FIXME Stack sizes should normally be set at thread creation time using the + standard interface, but Hurd threadvars have special alignment constraints. + Until they are completely replaced with correct TLS, make this hack + available. */ +extern size_t __pthread_stack_default_size; +weak_extern(__pthread_stack_default_size); + /* Forward. */ static void *init_routine (void); @@ -46,6 +56,10 @@ init_routine (void) struct __pthread *thread; int err; + /* FIXME */ + if (&__pthread_stack_default_size != NULL) + __pthread_default_attr.stacksize = __pthread_stack_default_size; + /* Initialize the library. */ __pthread_init (); -- cgit v1.2.3