This is the mail archive of the libc-hacker@sourceware.org mailing list for the glibc project.

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] <bits/pthreadtypes.h> updates


On Mon, Dec 26, 2005 at 10:20:48PM -0800, David S. Miller wrote:
> From: Ulrich Drepper <drepper@redhat.com>
> Date: Mon, 26 Dec 2005 17:32:06 -0800
> 
> > The patches I checked in work fine on x86.  I couldn't test x86-64
> > because I experience some mysterious build problems.   I think they
> > existed before the set of patches got checked in.  Other archs need
> > adjustment of the pthread_mutex_t type definition.
> 
> This should take care of Sparc.
> @@ -60,7 +60,7 @@
>  
>  /* Data structures for mutex handling.  The structure of the attribute
>     type is deliberately not exposed.  */
> -typedef union
> +typedef union __pthread_mutex_u
>  {
>    struct
>    {
> @@ -76,7 +76,11 @@
>  #if __WORDSIZE != 64
>      unsigned int __nusers;
>  #endif
> -    int __spins;
> +    union
> +    {
> +      int __spins;
> +      union __pthread_mutex_u *__next;
> +    };
>    } __data;
>    char __size[__SIZEOF_PTHREAD_MUTEX_T];
>    long int __align;

This is only correct for SPARC 32-bit.  The actual changes should look
following way, will test it later on today.

BTW, Uli, can you please
sed -i -e 's,\* nptl/,* ,;s/cpoyright/copyright/' nptl/ChangeLog && ci -m . nptl/ChangeLog
?

2005-12-27  Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h: Add __next
	and __prev field to pthread_mutex_t.
	* sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
	* sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
	* sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h: Likewise.
	* sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Add __next field
	to pthread_mutex_t.

--- libc/nptl/sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h.jj	2005-07-20 10:32:46.000000000 +0200
+++ libc/nptl/sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h	2005-12-27 12:13:43.000000000 +0100
@@ -45,7 +45,7 @@ typedef union
 
 /* Data structures for mutex handling.  The structure of the attribute
    type is deliberately not exposed.  */
-typedef union
+typedef union __pthread_mutex_u
 {
   struct
   {
@@ -57,6 +57,9 @@ typedef union
        binary compatibility.  */
     int __kind;
     int __spins;
+    union __pthread_mutex_u *__next;
+    union __pthread_mutex_u *__prev;
+#define __PTHREAD_MUTEX_HAVE_PREV	1
   } __data;
   char __size[__SIZEOF_PTHREAD_MUTEX_T];
   long int __align;
--- libc/nptl/sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h.jj	2004-09-30 00:50:04.000000000 +0200
+++ libc/nptl/sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h	2005-12-27 12:21:49.000000000 +0100
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Martin Schwidefsky <schwidefsky@de.ibm.com>, 2003.
 
@@ -59,7 +59,7 @@ typedef union
 
 /* Data structures for mutex handling.  The structure of the attribute
    type is not exposed on purpose.  */
-typedef union
+typedef union __pthread_mutex_u
 {
   struct
   {
@@ -72,10 +72,19 @@ typedef union
     /* KIND must stay at this position in the structure to maintain
        binary compatibility.  */
     int __kind;
-#if __WORDSIZE != 64
+#if __WORDSIZE == 64
+    int __spins;
+    union __pthread_mutex_u *__next;
+    union __pthread_mutex_u *__prev;
+# define __PTHREAD_MUTEX_HAVE_PREV	1
+#else
     unsigned int __nusers;
+    union
+    {
+      int __spins;
+      union __pthread_mutex_u *__next;
+    };
 #endif
-    int __spins;
   } __data;
   char __size[__SIZEOF_PTHREAD_MUTEX_T];
   long int __align;
--- libc/nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h.jj	2004-09-30 00:50:04.000000000 +0200
+++ libc/nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h	2005-12-27 12:19:37.000000000 +0100
@@ -1,5 +1,5 @@
 /* Machine-specific pthread type layouts.  PowerPC version.
-   Copyright (C) 2003, 2004 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Paul Mackerras <paulus@au.ibm.com>, 2003.
 
@@ -60,7 +60,7 @@ typedef union
 
 /* Data structures for mutex handling.  The structure of the attribute
    type is deliberately not exposed.  */
-typedef union
+typedef union __pthread_mutex_u
 {
   struct
   {
@@ -73,10 +73,19 @@ typedef union
     /* KIND must stay at this position in the structure to maintain
        binary compatibility.  */
     int __kind;
-#if __WORDSIZE != 64
+#if __WORDSIZE == 64
+    int __spins;
+    union __pthread_mutex_u *__next;
+    union __pthread_mutex_u *__prev;
+# define __PTHREAD_MUTEX_HAVE_PREV	1
+#else
     unsigned int __nusers;
+    union
+    {
+      int __spins;
+      union __pthread_mutex_u *__next;
+    };
 #endif
-    int __spins;
   } __data;
   char __size[__SIZEOF_PTHREAD_MUTEX_T];
   long int __align;
--- libc/nptl/sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h.jj	2004-09-30 00:50:04.000000000 +0200
+++ libc/nptl/sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h	2005-12-27 12:24:13.000000000 +0100
@@ -1,5 +1,5 @@
 /* Machine-specific pthread type layouts.  SPARC version.
-   Copyright (C) 2003, 2004 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
 
@@ -60,7 +60,7 @@ typedef union
 
 /* Data structures for mutex handling.  The structure of the attribute
    type is deliberately not exposed.  */
-typedef union
+typedef union __pthread_mutex_u
 {
   struct
   {
@@ -73,10 +73,19 @@ typedef union
     /* KIND must stay at this position in the structure to maintain
        binary compatibility.  */
     int __kind;
-#if __WORDSIZE != 64
+#if __WORDSIZE == 64
+    int __spins;
+    union __pthread_mutex_u *__next;
+    union __pthread_mutex_u *__prev;
+# define __PTHREAD_MUTEX_HAVE_PREV	1
+#else
     unsigned int __nusers;
+    union
+    {
+      int __spins;
+      union __pthread_mutex_u *__next;
+    };
 #endif
-    int __spins;
   } __data;
   char __size[__SIZEOF_PTHREAD_MUTEX_T];
   long int __align;
--- libc/nptl/sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h.jj	2005-07-20 10:37:43.000000000 +0200
+++ libc/nptl/sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h	2005-12-27 12:23:08.000000000 +0100
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
 
@@ -46,7 +46,7 @@ typedef union
 
 /* Data structures for mutex handling.  The structure of the attribute
    type is not exposed on purpose.  */
-typedef union
+typedef union __pthread_mutex_u
 {
   struct
   {
@@ -57,7 +57,11 @@ typedef union
        binary compatibility.  */
     int __kind;
     unsigned int __nusers;
-    int __spins;
+    union
+    {
+      int __spins;
+      union __pthread_mutex_u *__next;
+    };
   } __data;
   char __size[__SIZEOF_PTHREAD_MUTEX_T];
   long int __align;
--- libc/nptl/sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h.jj	2004-09-30 00:50:04.000000000 +0200
+++ libc/nptl/sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h	2005-12-27 12:16:36.000000000 +0100
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
 
@@ -45,7 +45,7 @@ typedef union
 
 /* Data structures for mutex handling.  The structure of the attribute
    type is not exposed on purpose.  */
-typedef union
+typedef union __pthread_mutex_u
 {
   struct
   {
@@ -57,6 +57,9 @@ typedef union
        binary compatibility.  */
     int __kind;
     int __spins;
+    union __pthread_mutex_u *__next;
+    union __pthread_mutex_u *__prev;
+#define __PTHREAD_MUTEX_HAVE_PREV	1
   } __data;
   char __size[__SIZEOF_PTHREAD_MUTEX_T];
   long int __align;


	Jakub


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]