aboutsummaryrefslogtreecommitdiff
path: root/nptl
diff options
context:
space:
mode:
Diffstat (limited to 'nptl')
-rw-r--r--nptl/ChangeLog16
-rw-r--r--nptl/allocatestack.c2
-rw-r--r--nptl/nptl-init.c3
-rw-r--r--nptl/pthreadP.h4
-rw-r--r--nptl/pthread_attr_getstacksize.c2
-rw-r--r--nptl/pthread_create.c11
-rw-r--r--nptl/vars.c10
7 files changed, 26 insertions, 22 deletions
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 <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 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 <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;