patches/glibc/ports-2.6.1/120-lll_lock_t.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun Jan 17 23:06:02 2010 +0100 (2010-01-17)
changeset 1740 c57458bb354d
parent 748 61cd4eb6034d
permissions -rw-r--r--
configure: do not require hg when configuring in an hg clone

When configuring in an hg clone, we need hg to compute the version string.
It can happen that users do not have Mercurial (eg. if they got a snapshot
rather that they did a full clone). In this case, we can still run, of
course, so simply fill the version string with a sufficiently explicit
value, that does not require hg. The date is a good candidate.
yann@748
     1
Propagate the patch from base glibc that changes lll_lock_t into a plain int,
yann@748
     2
without using a typedef, as glibc-2.7 now does.
yann@748
     3
yann@955
     4
diff -durN glibc-2.6.1.orig/glibc-ports-2.6.1/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h glibc-2.6.1/glibc-ports-2.6.1/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h
yann@955
     5
--- glibc-2.6.1.orig/glibc-ports-2.6.1/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h	2006-08-04 20:56:15.000000000 +0200
yann@955
     6
+++ glibc-2.6.1/glibc-ports-2.6.1/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h	2008-07-28 23:49:29.000000000 +0200
yann@748
     7
@@ -260,9 +260,6 @@
yann@748
     8
 /* Our internal lock implementation is identical to the binary-compatible
yann@748
     9
    mutex implementation. */
yann@748
    10
 
yann@748
    11
-/* Type for lock object.  */
yann@748
    12
-typedef int lll_lock_t;
yann@748
    13
-
yann@748
    14
 /* Initializers for lock.  */
yann@748
    15
 #define LLL_LOCK_INITIALIZER		(0)
yann@748
    16
 #define LLL_LOCK_INITIALIZER_LOCKED	(1)
yann@955
    17
diff -durN glibc-2.6.1.orig/glibc-ports-2.6.1/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.c glibc-2.6.1/glibc-ports-2.6.1/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.c
yann@955
    18
--- glibc-2.6.1.orig/glibc-ports-2.6.1/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.c	2006-07-14 15:51:24.000000000 +0200
yann@955
    19
+++ glibc-2.6.1/glibc-ports-2.6.1/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.c	2008-07-28 23:49:56.000000000 +0200
yann@748
    20
@@ -25,7 +25,7 @@
yann@748
    21
 
yann@748
    22
 
yann@748
    23
 void
yann@748
    24
-__lll_lock_wait (lll_lock_t *futex)
yann@748
    25
+__lll_lock_wait (int *futex)
yann@748
    26
 {
yann@748
    27
   do
yann@748
    28
     {
yann@748
    29
@@ -38,7 +38,7 @@
yann@748
    30
 
yann@748
    31
 
yann@748
    32
 int
yann@748
    33
-__lll_timedlock_wait (lll_lock_t *futex, const struct timespec *abstime)
yann@748
    34
+__lll_timedlock_wait (int *futex, const struct timespec *abstime)
yann@748
    35
 {
yann@748
    36
   /* Reject invalid timeouts.  */
yann@748
    37
   if (abstime->tv_nsec < 0 || abstime->tv_nsec >= 1000000000)
yann@748
    38
@@ -78,7 +78,7 @@
yann@748
    39
 /* These don't get included in libc.so  */
yann@748
    40
 #ifdef IS_IN_libpthread
yann@748
    41
 int
yann@748
    42
-lll_unlock_wake_cb (lll_lock_t *futex)
yann@748
    43
+lll_unlock_wake_cb (int *futex)
yann@748
    44
 {
yann@748
    45
   int val = atomic_exchange_rel (futex, 0);
yann@748
    46
 
yann@955
    47
diff -durN glibc-2.6.1.orig/glibc-ports-2.6.1/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h glibc-2.6.1/glibc-ports-2.6.1/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h
yann@955
    48
--- glibc-2.6.1.orig/glibc-ports-2.6.1/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h	2006-09-07 18:34:43.000000000 +0200
yann@955
    49
+++ glibc-2.6.1/glibc-ports-2.6.1/sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h	2008-07-28 23:50:54.000000000 +0200
yann@748
    50
@@ -43,11 +43,6 @@
yann@748
    51
 /* Initialize locks to zero.  */
yann@748
    52
 #define LLL_MUTEX_LOCK_INITIALIZER (0)
yann@748
    53
 
yann@748
    54
-
yann@748
    55
-/* Type for lock object.  */
yann@748
    56
-typedef int lll_lock_t;
yann@748
    57
-
yann@748
    58
-
yann@748
    59
 #define lll_futex_wait(futexp, val) \
yann@748
    60
   ({									      \
yann@748
    61
     INTERNAL_SYSCALL_DECL (__err);					      \
yann@748
    62
@@ -108,7 +103,7 @@
yann@748
    63
   })
yann@748
    64
 
yann@748
    65
 static inline int __attribute__((always_inline))
yann@748
    66
-__lll_mutex_trylock(lll_lock_t *futex)
yann@748
    67
+__lll_mutex_trylock(int *futex)
yann@748
    68
 {
yann@748
    69
   return atomic_compare_and_exchange_val_acq (futex, 1, 0) != 0;
yann@748
    70
 }
yann@748
    71
@@ -124,17 +119,17 @@
yann@748
    72
 
yann@748
    73
 
yann@748
    74
 static inline int __attribute__((always_inline))
yann@748
    75
-__lll_mutex_cond_trylock(lll_lock_t *futex)
yann@748
    76
+__lll_mutex_cond_trylock(int *futex)
yann@748
    77
 {
yann@748
    78
   return atomic_compare_and_exchange_val_acq (futex, 2, 0) != 0;
yann@748
    79
 }
yann@748
    80
 #define lll_mutex_cond_trylock(lock)	__lll_mutex_cond_trylock (&(lock))
yann@748
    81
 
yann@748
    82
 
yann@748
    83
-extern void __lll_lock_wait (lll_lock_t *futex) attribute_hidden;
yann@748
    84
+extern void __lll_lock_wait (int *futex) attribute_hidden;
yann@748
    85
 
yann@748
    86
 static inline void __attribute__((always_inline))
yann@748
    87
-__lll_mutex_lock(lll_lock_t *futex)
yann@748
    88
+__lll_mutex_lock(int *futex)
yann@748
    89
 {
yann@748
    90
   if (atomic_compare_and_exchange_bool_acq (futex, 1, 0) != 0)
yann@748
    91
     __lll_lock_wait (futex);
yann@748
    92
@@ -155,7 +150,7 @@
yann@748
    93
   __lll_robust_mutex_lock (&(futex), id)
yann@748
    94
 
yann@748
    95
 static inline void __attribute__ ((always_inline))
yann@748
    96
-__lll_mutex_cond_lock (lll_lock_t *futex)
yann@748
    97
+__lll_mutex_cond_lock (int *futex)
yann@748
    98
 {
yann@748
    99
   if (atomic_compare_and_exchange_bool_acq (futex, 2, 0) != 0)
yann@748
   100
     __lll_lock_wait (futex);
yann@748
   101
@@ -167,13 +162,13 @@
yann@748
   102
   __lll_robust_mutex_lock (&(futex), (id) | FUTEX_WAITERS)
yann@748
   103
 
yann@748
   104
 
yann@748
   105
-extern int __lll_timedlock_wait (lll_lock_t *futex, const struct timespec *)
yann@748
   106
+extern int __lll_timedlock_wait (int *futex, const struct timespec *)
yann@748
   107
 	attribute_hidden;
yann@748
   108
 extern int __lll_robust_timedlock_wait (int *futex, const struct timespec *)
yann@748
   109
 	attribute_hidden;
yann@748
   110
 
yann@748
   111
 static inline int __attribute__ ((always_inline))
yann@748
   112
-__lll_mutex_timedlock (lll_lock_t *futex, const struct timespec *abstime)
yann@748
   113
+__lll_mutex_timedlock (int *futex, const struct timespec *abstime)
yann@748
   114
 {
yann@748
   115
   int result = 0;
yann@748
   116
   if (atomic_compare_and_exchange_bool_acq (futex, 1, 0) != 0)
yann@748
   117
@@ -197,7 +192,7 @@
yann@748
   118
 
yann@748
   119
 
yann@748
   120
 static inline void __attribute__ ((always_inline))
yann@748
   121
-__lll_mutex_unlock (lll_lock_t *futex)
yann@748
   122
+__lll_mutex_unlock (int *futex)
yann@748
   123
 {
yann@748
   124
   int val = atomic_exchange_rel (futex, 0);
yann@748
   125
   if (__builtin_expect (val > 1, 0))
yann@748
   126
@@ -218,7 +213,7 @@
yann@748
   127
 
yann@748
   128
 
yann@748
   129
 static inline void __attribute__ ((always_inline))
yann@748
   130
-__lll_mutex_unlock_force (lll_lock_t *futex)
yann@748
   131
+__lll_mutex_unlock_force (int *futex)
yann@748
   132
 {
yann@748
   133
   (void) atomic_exchange_rel (futex, 0);
yann@748
   134
   lll_futex_wake (futex, 1);
yann@748
   135
@@ -239,7 +234,7 @@
yann@748
   136
 #define THREAD_INIT_LOCK(PD, LOCK) \
yann@748
   137
   (PD)->LOCK = LLL_LOCK_INITIALIZER
yann@748
   138
 
yann@748
   139
-extern int lll_unlock_wake_cb (lll_lock_t *__futex) attribute_hidden;
yann@748
   140
+extern int lll_unlock_wake_cb (int *__futex) attribute_hidden;
yann@748
   141
 
yann@748
   142
 /* The states of a lock are:
yann@748
   143
     0  -  untaken
yann@955
   144
diff -durN glibc-2.6.1.orig/glibc-ports-2.6.1/sysdeps/unix/sysv/linux/mips/nptl/lowlevellock.h glibc-2.6.1/glibc-ports-2.6.1/sysdeps/unix/sysv/linux/mips/nptl/lowlevellock.h
yann@955
   145
--- glibc-2.6.1.orig/glibc-ports-2.6.1/sysdeps/unix/sysv/linux/mips/nptl/lowlevellock.h	2006-08-04 20:54:56.000000000 +0200
yann@955
   146
+++ glibc-2.6.1/glibc-ports-2.6.1/sysdeps/unix/sysv/linux/mips/nptl/lowlevellock.h	2008-07-28 23:51:14.000000000 +0200
yann@748
   147
@@ -227,9 +227,6 @@
yann@748
   148
 /* Our internal lock implementation is identical to the binary-compatible
yann@748
   149
    mutex implementation. */
yann@748
   150
 
yann@748
   151
-/* Type for lock object.  */
yann@748
   152
-typedef int lll_lock_t;
yann@748
   153
-
yann@748
   154
 /* Initializers for lock.  */
yann@748
   155
 #define LLL_LOCK_INITIALIZER		(0)
yann@748
   156
 #define LLL_LOCK_INITIALIZER_LOCKED	(1)