From 33ce920857405d4f4b342c85b74588a15e2702e5 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Mon, 7 Nov 2016 20:47:24 -0500 Subject: simplify pthread_attr_t stack/guard size representation previously, the pthread_attr_t object was always initialized all-zero, and stack/guard size were represented as differences versus their defaults. this required lots of confusing offset arithmetic everywhere they were used. instead, have pthread_attr_init fill in the default values, and work with absolute sizes everywhere. --- src/thread/pthread_getattr_np.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/thread/pthread_getattr_np.c') diff --git a/src/thread/pthread_getattr_np.c b/src/thread/pthread_getattr_np.c index 10ea5127..ae26a5ab 100644 --- a/src/thread/pthread_getattr_np.c +++ b/src/thread/pthread_getattr_np.c @@ -9,7 +9,7 @@ int pthread_getattr_np(pthread_t t, pthread_attr_t *a) a->_a_detach = !!t->detached; if (t->stack) { a->_a_stackaddr = (uintptr_t)t->stack; - a->_a_stacksize = t->stack_size - DEFAULT_STACK_SIZE; + a->_a_stacksize = t->stack_size; } else { char *p = (void *)libc.auxv; size_t l = PAGE_SIZE; @@ -17,7 +17,7 @@ int pthread_getattr_np(pthread_t t, pthread_attr_t *a) a->_a_stackaddr = (uintptr_t)p; while (mremap(p-l-PAGE_SIZE, PAGE_SIZE, 2*PAGE_SIZE, 0)==MAP_FAILED && errno==ENOMEM) l += PAGE_SIZE; - a->_a_stacksize = l - DEFAULT_STACK_SIZE; + a->_a_stacksize = l; } return 0; } -- cgit v1.2.1