diff options
author | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2017-01-30 18:07:32 -0200 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2017-02-06 15:58:32 -0200 |
commit | 37f8abad1c7b274e66eaf2d04684bd8a7ba0bcef (patch) | |
tree | 186d0281c94cd644f54b0cfbc64111c250ecee7f /nptl | |
parent | 2b7dc4c868553db14f439ee4b49873f6ca3ef71f (diff) | |
download | glibc-37f8abad1c7b274e66eaf2d04684bd8a7ba0bcef.zip glibc-37f8abad1c7b274e66eaf2d04684bd8a7ba0bcef.tar.gz glibc-37f8abad1c7b274e66eaf2d04684bd8a7ba0bcef.tar.bz2 |
nptl: Remove COLORING_INCREMENT
This patch removes the COLORING_INCREMENT define and usage on allocatestack.c.
It has not been used since 564cd8b67ec487f (glibc-2.3.3) by any architecture.
The idea is to simplify the code by removing obsolete code.
* nptl/allocatestack.c [COLORING_INCREMENT] (nptl_ncreated): Remove.
(allocate_stack): Remove COLORING_INCREMENT usage.
* nptl/stack-aliasing.h (COLORING_INCREMENT). Likewise.
* sysdeps/i386/i686/stack-aliasing.h (COLORING_INCREMENT): Likewise.
Diffstat (limited to 'nptl')
-rw-r--r-- | nptl/allocatestack.c | 40 | ||||
-rw-r--r-- | nptl/stack-aliasing.h | 6 |
2 files changed, 2 insertions, 44 deletions
diff --git a/nptl/allocatestack.c b/nptl/allocatestack.c index 8a228ab..e5c5f79 100644 --- a/nptl/allocatestack.c +++ b/nptl/allocatestack.c @@ -125,11 +125,6 @@ static uintptr_t in_flight_stack; list_t __stack_user __attribute__ ((nocommon)); hidden_data_def (__stack_user) -#if COLORING_INCREMENT != 0 -/* Number of threads created. */ -static unsigned int nptl_ncreated; -#endif - /* Check whether the stack is still used or not. */ #define FREE_P(descr) ((descr)->tid <= 0) @@ -467,14 +462,6 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp, const int prot = (PROT_READ | PROT_WRITE | ((GL(dl_stack_flags) & PF_X) ? PROT_EXEC : 0)); -#if COLORING_INCREMENT != 0 - /* Add one more page for stack coloring. Don't do it for stacks - with 16 times pagesize or larger. This might just cause - unnecessary misalignment. */ - if (size <= 16 * pagesize_m1) - size += pagesize_m1 + 1; -#endif - /* Adjust the stack size for alignment. */ size &= ~__static_tls_align_m1; assert (size != 0); @@ -513,34 +500,11 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp, So we can never get a null pointer back from mmap. */ assert (mem != NULL); -#if COLORING_INCREMENT != 0 - /* Atomically increment NCREATED. */ - unsigned int ncreated = atomic_increment_val (&nptl_ncreated); - - /* We chose the offset for coloring by incrementing it for - every new thread by a fixed amount. The offset used - module the page size. Even if coloring would be better - relative to higher alignment values it makes no sense to - do it since the mmap() interface does not allow us to - specify any alignment for the returned memory block. */ - size_t coloring = (ncreated * COLORING_INCREMENT) & pagesize_m1; - - /* Make sure the coloring offsets does not disturb the alignment - of the TCB and static TLS block. */ - if (__glibc_unlikely ((coloring & __static_tls_align_m1) != 0)) - coloring = (((coloring + __static_tls_align_m1) - & ~(__static_tls_align_m1)) - & ~pagesize_m1); -#else - /* Unless specified we do not make any adjustments. */ -# define coloring 0 -#endif - /* Place the thread descriptor at the end of the stack. */ #if TLS_TCB_AT_TP - pd = (struct pthread *) ((char *) mem + size - coloring) - 1; + pd = (struct pthread *) ((char *) mem + size) - 1; #elif TLS_DTV_AT_TP - pd = (struct pthread *) ((((uintptr_t) mem + size - coloring + pd = (struct pthread *) ((((uintptr_t) mem + size - __static_tls_size) & ~__static_tls_align_m1) - TLS_PRE_TCB_SIZE); diff --git a/nptl/stack-aliasing.h b/nptl/stack-aliasing.h index 4d6c013..73ee4de 100644 --- a/nptl/stack-aliasing.h +++ b/nptl/stack-aliasing.h @@ -16,12 +16,6 @@ License along with the GNU C Library; if not, see <http://www.gnu.org/licenses/>. */ -/* This is a number of bytes (less than a page) by which to "color" the - starting stack address of new threads. This number is multiplied by the - number of threads created so far and then truncated modulo page size, - to get a roughly even distribution of values for different threads. */ -#define COLORING_INCREMENT 0 - /* This is a number of bytes that is an alignment that should be avoided when choosing the exact size of a new thread's stack. If the size chosen is aligned to this, an extra page will be added to render the |