Blame SOURCES/glibc-rh841653-1.patch

147e83
commit b023e4ca99f5e81f90d87d23cd267ef2abd2388c
147e83
Author: Andi Kleen <ak@linux.intel.com>
147e83
Date:   Sat Dec 22 00:58:34 2012 -0800
147e83
147e83
    Add new internal mutex type flags for elision.
147e83
    
147e83
    Add Enable/disable flags used internally
147e83
    
147e83
    Extend the mutex initializers to have the fields needed for
147e83
    elision. The layout stays the same, and this is not visible
147e83
    to programs.
147e83
    
147e83
    These changes are not exposed outside pthread
147e83
Index: glibc-2.17-c758a686/nptl/pthreadP.h
147e83
===================================================================
147e83
--- glibc-2.17-c758a686.orig/nptl/pthreadP.h
147e83
+++ glibc-2.17-c758a686/nptl/pthreadP.h
147e83
@@ -61,6 +61,10 @@
147e83
 enum
147e83
 {
147e83
   PTHREAD_MUTEX_KIND_MASK_NP = 3,
147e83
+
147e83
+  PTHREAD_MUTEX_ELISION_NP    = 256,
147e83
+  PTHREAD_MUTEX_NO_ELISION_NP = 512,
147e83
+
147e83
   PTHREAD_MUTEX_ROBUST_NORMAL_NP = 16,
147e83
   PTHREAD_MUTEX_ROBUST_RECURSIVE_NP
147e83
   = PTHREAD_MUTEX_ROBUST_NORMAL_NP | PTHREAD_MUTEX_RECURSIVE_NP,
147e83
@@ -93,12 +97,21 @@ enum
147e83
   PTHREAD_MUTEX_PP_ERRORCHECK_NP
147e83
   = PTHREAD_MUTEX_PRIO_PROTECT_NP | PTHREAD_MUTEX_ERRORCHECK_NP,
147e83
   PTHREAD_MUTEX_PP_ADAPTIVE_NP
147e83
-  = PTHREAD_MUTEX_PRIO_PROTECT_NP | PTHREAD_MUTEX_ADAPTIVE_NP
147e83
+  = PTHREAD_MUTEX_PRIO_PROTECT_NP | PTHREAD_MUTEX_ADAPTIVE_NP,
147e83
+  PTHREAD_MUTEX_ELISION_FLAGS_NP
147e83
+  = PTHREAD_MUTEX_ELISION_NP | PTHREAD_MUTEX_NO_ELISION_NP,
147e83
+
147e83
+  PTHREAD_MUTEX_TIMED_ELISION_NP =
147e83
+	  PTHREAD_MUTEX_TIMED_NP | PTHREAD_MUTEX_ELISION_NP,
147e83
+  PTHREAD_MUTEX_TIMED_NO_ELISION_NP =
147e83
+	  PTHREAD_MUTEX_TIMED_NP | PTHREAD_MUTEX_NO_ELISION_NP,
147e83
 };
147e83
 #define PTHREAD_MUTEX_PSHARED_BIT 128
147e83
 
147e83
 #define PTHREAD_MUTEX_TYPE(m) \
147e83
   ((m)->__data.__kind & 127)
147e83
+#define PTHREAD_MUTEX_TYPE_ELISION(m) \
147e83
+  ((m)->__data.__kind & (127|PTHREAD_MUTEX_ELISION_FLAGS_NP))
147e83
 
147e83
 #if LLL_PRIVATE == 0 && LLL_SHARED == 128
147e83
 # define PTHREAD_MUTEX_PSHARED(m) \
147e83
Index: glibc-2.17-c758a686/nptl/sysdeps/pthread/pthread.h
147e83
===================================================================
147e83
--- glibc-2.17-c758a686.orig/nptl/sysdeps/pthread/pthread.h
147e83
+++ glibc-2.17-c758a686/nptl/sysdeps/pthread/pthread.h
147e83
@@ -83,27 +83,39 @@ enum
147e83
 
147e83
 
147e83
 /* Mutex initializers.  */
147e83
+#if __PTHREAD_MUTEX_HAVE_ELISION == 1 /* 64bit layout.  */
147e83
+#define __PTHREAD_SPINS 0, 0
147e83
+#elif __PTHREAD_MUTEX_HAVE_ELISION == 2 /* 32bit layout.  */
147e83
+#define __PTHREAD_SPINS { 0, 0 }
147e83
+#else
147e83
+#define __PTHREAD_SPINS 0
147e83
+#endif
147e83
+
147e83
 #ifdef __PTHREAD_MUTEX_HAVE_PREV
147e83
 # define PTHREAD_MUTEX_INITIALIZER \
147e83
-  { { 0, 0, 0, 0, 0, 0, { 0, 0 } } }
147e83
+  { { 0, 0, 0, 0, 0, __PTHREAD_SPINS, { 0, 0 } } }
147e83
 # ifdef __USE_GNU
147e83
 #  define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP \
147e83
-  { { 0, 0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP, 0, { 0, 0 } } }
147e83
+  { { 0, 0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP, __PTHREAD_SPINS, { 0, 0 } } }
147e83
 #  define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP \
147e83
-  { { 0, 0, 0, 0, PTHREAD_MUTEX_ERRORCHECK_NP, 0, { 0, 0 } } }
147e83
+  { { 0, 0, 0, 0, PTHREAD_MUTEX_ERRORCHECK_NP, __PTHREAD_SPINS, { 0, 0 } } }
147e83
 #  define PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP \
147e83
-  { { 0, 0, 0, 0, PTHREAD_MUTEX_ADAPTIVE_NP, 0, { 0, 0 } } }
147e83
+  { { 0, 0, 0, 0, PTHREAD_MUTEX_ADAPTIVE_NP, __PTHREAD_SPINS, { 0, 0 } } }
147e83
+#  define PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP \
147e83
+  { { 0, 0, 0, 0, PTHREAD_MUTEX_ADAPTIVE_NP, __PTHREAD_SPINS, { 0, 0 } } }
147e83
+
147e83
 # endif
147e83
 #else
147e83
 # define PTHREAD_MUTEX_INITIALIZER \
147e83
-  { { 0, 0, 0, 0, 0, { 0 } } }
147e83
+  { { 0, 0, 0, 0, 0, { __PTHREAD_SPINS } } }
147e83
 # ifdef __USE_GNU
147e83
 #  define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP \
147e83
-  { { 0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP, 0, { 0 } } }
147e83
+  { { 0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP, 0, { __PTHREAD_SPINS } } }
147e83
 #  define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP \
147e83
-  { { 0, 0, 0, PTHREAD_MUTEX_ERRORCHECK_NP, 0, { 0 } } }
147e83
+  { { 0, 0, 0, PTHREAD_MUTEX_ERRORCHECK_NP, 0, { __PTHREAD_SPINS } } }
147e83
 #  define PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP \
147e83
-  { { 0, 0, 0, PTHREAD_MUTEX_ADAPTIVE_NP, 0, { 0 } } }
147e83
+  { { 0, 0, 0, PTHREAD_MUTEX_ADAPTIVE_NP, 0, { __PTHREAD_SPINS } } }
147e83
+
147e83
 # endif
147e83
 #endif
147e83