]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
nptl: Remove COLORING_INCREMENT
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Mon, 30 Jan 2017 20:07:32 +0000 (18:07 -0200)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Mon, 6 Feb 2017 17:58:32 +0000 (15:58 -0200)
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.

ChangeLog
nptl/allocatestack.c
nptl/stack-aliasing.h
sysdeps/i386/i686/stack-aliasing.h

index e4b1a86bd1c93d043c1cb939f5935c26c3078390..710f9b4cadd3ce7ed8a2be5f09b9dccb221f70ff 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2016-02-06  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
+
+       * 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.
+
 2017-02-06  Joseph Myers  <joseph@codesourcery.com>
 
        * manual/libm-err-tab.pl (@all_functions): Change to
index 8a228ab25427e5eba37c05a012792dd40829858b..e5c5f79a82aaf5d48121977fd0ae019293f951c0 100644 (file)
@@ -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);
index 4d6c013ef0ae0887835009d0fef6866226dff7ab..73ee4ded3d3715dee15e04d4591b6e75ebda1078 100644 (file)
    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
index 7872e47fd4d1d72a34a8e7c4778c712be6d1838d..9b5a1b0d478a2f6f6658cd9d9da20fc8f833206b 100644 (file)
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-/* It turns out that stack coloring is in general not good on P4s.  Some
-   applications will benefit.  We will probably have a configuration option
-   at some point.  To enable coloring, set this to 128.  */
-#define COLORING_INCREMENT      0
-
 /* What is useful is to avoid the 64k aliasing problem which reliably
    happens if all stacks use sizes which are a multiple of 64k.  Tell
    the stack allocator to disturb this by allocation one more page if