From e903a7138b4a39904b9d17a1d7715ae7c17fd832 Mon Sep 17 00:00:00 2001 From: Siddhesh Poyarekar Date: Tue, 19 Mar 2013 14:34:13 +0530 Subject: Move __default_stacksize into __default_pthread_attr Make __default_pthread_attr object to store default attribute values for threads. --- nptl/ChangeLog | 16 ++++++++++++++++ nptl/allocatestack.c | 2 +- nptl/nptl-init.c | 3 ++- nptl/pthreadP.h | 4 ++-- nptl/pthread_attr_getstacksize.c | 2 +- nptl/pthread_create.c | 11 +---------- nptl/vars.c | 10 +++------- 7 files changed, 26 insertions(+), 22 deletions(-) (limited to 'nptl') diff --git a/nptl/ChangeLog b/nptl/ChangeLog index db98d4e..12a8ffd 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,3 +1,19 @@ +2013-03-19 Siddhesh Poyarekar + + * 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 * pthread_barrier_init.c (default_attr): Rename to diff --git a/nptl/allocatestack.c b/nptl/allocatestack.c index 31c8829..56bf257 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 19e6616..63fb729 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 d08b219..954b54a 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 6df7062..42d3f8f 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 c6f2fdd..c18278c 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 2bcd1f8..45ca486 100644 --- a/nptl/vars.c +++ b/nptl/vars.c @@ -20,13 +20,9 @@ #include #include -/* 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; -- cgit v1.1