diff options
-rw-r--r-- | nptl/ChangeLog | 16 | ||||
-rw-r--r-- | nptl/allocatestack.c | 2 | ||||
-rw-r--r-- | nptl/nptl-init.c | 3 | ||||
-rw-r--r-- | nptl/pthreadP.h | 4 | ||||
-rw-r--r-- | nptl/pthread_attr_getstacksize.c | 2 | ||||
-rw-r--r-- | nptl/pthread_create.c | 11 | ||||
-rw-r--r-- | nptl/vars.c | 10 |
7 files changed, 26 insertions, 22 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog index db98d4e9ca..12a8ffde8c 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,3 +1,19 @@ +2013-03-19 Siddhesh Poyarekar <siddhesh@redhat.com> + + * allocatestack.c (allocate_stack): Use __default_attr instead + of __default_stacksize. + * nptl-init.c (__pthread_initialize_minimal_internal): + Likewise. Initialize guardsize. + * pthreadP.h (__default_attr): Declare. + * pthread_attr_getstacksize.c (__pthread_attr_getstacksize): + Use __default_attr instead of __default_stacksize. + * pthread_create.c (default_attr): Remove. + (__pthread_create_2_1): Use __default_attr instead of + default_attr. + * vars.c (__default_stacksize): Remove. + (__default_attr): New static variable to store + default thread attributes. + 2013-03-18 Siddhesh Poyarekar <siddhesh@redhat.com> * pthread_barrier_init.c (default_attr): Rename to diff --git a/nptl/allocatestack.c b/nptl/allocatestack.c index 31c88291ae..56bf2570f8 100644 --- a/nptl/allocatestack.c +++ b/nptl/allocatestack.c @@ -358,7 +358,7 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp, /* Get the stack size from the attribute if it is set. Otherwise we use the default we determined at start time. */ - size = attr->stacksize ?: __default_stacksize; + size = attr->stacksize ?: __default_pthread_attr.stacksize; /* Get memory for the stack. */ if (__builtin_expect (attr->flags & ATTR_FLAG_STACKADDR, 0)) diff --git a/nptl/nptl-init.c b/nptl/nptl-init.c index 19e6616420..63fb729fc6 100644 --- a/nptl/nptl-init.c +++ b/nptl/nptl-init.c @@ -423,7 +423,8 @@ __pthread_initialize_minimal_internal (void) /* Round the resource limit up to page size. */ limit.rlim_cur = (limit.rlim_cur + pagesz - 1) & -pagesz; - __default_stacksize = limit.rlim_cur; + __default_pthread_attr.stacksize = limit.rlim_cur; + __default_pthread_attr.guardsize = GLRO (dl_pagesize); #ifdef SHARED /* Transfer the old value from the dynamic linker's internal location. */ diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h index d08b219b5d..954b54a50a 100644 --- a/nptl/pthreadP.h +++ b/nptl/pthreadP.h @@ -147,8 +147,8 @@ enum /* Internal variables. */ -/* Default stack size. */ -extern size_t __default_stacksize attribute_hidden; +/* Default pthread attributes. */ +extern struct pthread_attr __default_pthread_attr attribute_hidden; /* Size and alignment of static TLS block. */ extern size_t __static_tls_size attribute_hidden; diff --git a/nptl/pthread_attr_getstacksize.c b/nptl/pthread_attr_getstacksize.c index 6df70623e8..42d3f8f44c 100644 --- a/nptl/pthread_attr_getstacksize.c +++ b/nptl/pthread_attr_getstacksize.c @@ -32,7 +32,7 @@ __pthread_attr_getstacksize (attr, stacksize) /* If the user has not set a stack size we return what the system will use as the default. */ - *stacksize = iattr->stacksize ?: __default_stacksize; + *stacksize = iattr->stacksize ?: __default_pthread_attr.stacksize; return 0; } diff --git a/nptl/pthread_create.c b/nptl/pthread_create.c index c6f2fdd724..c18278cf08 100644 --- a/nptl/pthread_create.c +++ b/nptl/pthread_create.c @@ -435,15 +435,6 @@ start_thread (void *arg) } -/* Default thread attributes for the case when the user does not - provide any. */ -static const struct pthread_attr default_attr = - { - /* Just some value > 0 which gets rounded to the nearest page size. */ - .guardsize = 1, - }; - - int __pthread_create_2_1 (newthread, attr, start_routine, arg) pthread_t *newthread; @@ -457,7 +448,7 @@ __pthread_create_2_1 (newthread, attr, start_routine, arg) if (iattr == NULL) /* Is this the best idea? On NUMA machines this could mean accessing far-away memory. */ - iattr = &default_attr; + iattr = &__default_pthread_attr; struct pthread *pd = NULL; int err = ALLOCATE_STACK (iattr, &pd); diff --git a/nptl/vars.c b/nptl/vars.c index 2bcd1f8e0a..45ca486143 100644 --- a/nptl/vars.c +++ b/nptl/vars.c @@ -20,13 +20,9 @@ #include <tls.h> #include <unistd.h> -/* Default stack size. */ -size_t __default_stacksize attribute_hidden -#ifdef SHARED -; -#else - = PTHREAD_STACK_MIN; -#endif +/* Default thread attributes for the case when the user does not + provide any. */ +struct pthread_attr __default_pthread_attr attribute_hidden; /* Flag whether the machine is SMP or not. */ int __is_smp attribute_hidden; |