summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2014-05-02 12:30:16 +0200
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2014-05-02 12:30:16 +0200
commit19657e8b846a7426424f261c355bc54a68b3021b (patch)
tree7ac17a0095e9ae21c7e779efac181f7178f3a4fe
parente2ae1c43d168fc6f8b34332cbb0656e5d107cbf3 (diff)
Fix guardsize semantic
POSIX says guardsize is in addition to stacksize, not included. * pthread/pt-create.c (__pthread_create_internal): Use setup->guardsize + setup->stacksize as stack allocation size. Do not truncate guardsize to stacksize. * pthread/pt-internal.h (guardsize): Remove comment. * sysdeps/generic/pt-attr-setstacksize.c (pthread_attr_setstacksize): Do not truncate guardsize to stacksize.
-rw-r--r--pthread/pt-create.c4
-rw-r--r--pthread/pt-internal.h6
-rw-r--r--sysdeps/generic/pt-attr-setstacksize.c6
3 files changed, 2 insertions, 14 deletions
diff --git a/pthread/pt-create.c b/pthread/pt-create.c
index c2c84b1..8c18902 100644
--- a/pthread/pt-create.c
+++ b/pthread/pt-create.c
@@ -118,12 +118,10 @@ __pthread_create_internal (struct __pthread **thread,
{
/* Allocate a stack. */
err = __pthread_stack_alloc (&pthread->stackaddr,
- setup->stacksize);
+ setup->guardsize + setup->stacksize);
if (err)
goto failed_stack_alloc;
- pthread->guardsize = (setup->guardsize <= setup->stacksize
- ? setup->guardsize : setup->stacksize);
pthread->stack = 1;
}
diff --git a/pthread/pt-internal.h b/pthread/pt-internal.h
index eca63a1..79db55c 100644
--- a/pthread/pt-internal.h
+++ b/pthread/pt-internal.h
@@ -94,11 +94,7 @@ struct __pthread
/* Thread stack. */
void *stackaddr;
size_t stacksize;
- size_t guardsize; /* Included in STACKSIZE (i.e. total
- stack memory is STACKSIZE, not
- STACKSIZE + GUARDSIZE). */
- /* FIXME: standard says that guardsize is in
- addition to stacksize. */
+ size_t guardsize;
int stack; /* Nonzero if the stack was allocated. */
/* Exit status. */
diff --git a/sysdeps/generic/pt-attr-setstacksize.c b/sysdeps/generic/pt-attr-setstacksize.c
index c88f917..00d9675 100644
--- a/sysdeps/generic/pt-attr-setstacksize.c
+++ b/sysdeps/generic/pt-attr-setstacksize.c
@@ -26,11 +26,5 @@ pthread_attr_setstacksize (pthread_attr_t *attr,
{
attr->stacksize = stacksize;
- /* The guard size cannot be larger than the stack itself, as
- such, if the new stack size is smaller than the guard size,
- we squash the guard size. */
- if (attr->guardsize > attr->stacksize)
- attr->guardsize = attr->stacksize;
-
return 0;
}