diff options
| author | Khem Raj <kraj@mvista.com> | 2008-12-10 04:39:44 +0000 | 
|---|---|---|
| committer | Khem Raj <kraj@mvista.com> | 2008-12-10 04:39:44 +0000 | 
| commit | a29f11cc811aecaa2474af413064afca961b081e (patch) | |
| tree | 6862614ba98532a1a94c167920df67ce8afa1d08 /libpthread/nptl/sysdeps/unix/sysv | |
| parent | 4832b60988d116c0d59d46b63439da59058f2a98 (diff) | |
| download | uClibc-alpine-a29f11cc811aecaa2474af413064afca961b081e.tar.bz2 uClibc-alpine-a29f11cc811aecaa2474af413064afca961b081e.tar.xz  | |
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Update pthread_mutex_t definition and initializations.
Diffstat (limited to 'libpthread/nptl/sysdeps/unix/sysv')
6 files changed, 107 insertions, 12 deletions
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h b/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h index 86b47037e..0f3bf838e 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h @@ -43,11 +43,18 @@ typedef union  } pthread_attr_t; +typedef struct __pthread_internal_list +{ +  struct __pthread_internal_list *__prev; +  struct __pthread_internal_list *__next; +} __pthread_list_t; + +  /* Data structures for mutex handling.  The structure of the attribute     type is deliberately not exposed.  */  typedef union  { -  struct +  struct __pthread_mutex_s    {      int __lock;      unsigned int __count; @@ -57,6 +64,8 @@ typedef union         binary compatibility.  */      int __kind;      int __spins; +    __pthread_list_t __list; +#define __PTHREAD_MUTEX_HAVE_PREV       1    } __data;    char __size[__SIZEOF_PTHREAD_MUTEX_T];    long int __align; diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h b/libpthread/nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h index 4d1c9450b..0ec6e5534 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h @@ -43,11 +43,17 @@ typedef union  } pthread_attr_t; +typedef struct __pthread_internal_slist +{ +  struct __pthread_internal_slist *__next; +} __pthread_slist_t; + +  /* Data structures for mutex handling.  The structure of the attribute     type is not exposed on purpose.  */  typedef union  { -  struct +  struct __pthread_mutex_s    {      int __lock;      unsigned int __count; @@ -56,7 +62,11 @@ typedef union         binary compatibility.  */      int __kind;      unsigned int __nusers; -    int __spins; +    __extension__ union +    { +      int __spins; +      __pthread_slist_t __list; +    };    } __data;    char __size[__SIZEOF_PTHREAD_MUTEX_T];    long int __align; diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/mips/bits/pthreadtypes.h b/libpthread/nptl/sysdeps/unix/sysv/linux/mips/bits/pthreadtypes.h index e14a48750..54f1a0652 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/mips/bits/pthreadtypes.h +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/mips/bits/pthreadtypes.h @@ -54,12 +54,24 @@ typedef union    long int __align;  } pthread_attr_t; +#if _MIPS_SIM == _ABI64 +typedef struct __pthread_internal_list +{ +  struct __pthread_internal_list *__prev; +  struct __pthread_internal_list *__next; +} __pthread_list_t; +#else +typedef struct __pthread_internal_slist +{ +  struct __pthread_internal_slist *__next; +} __pthread_slist_t; +#endif  /* Data structures for mutex handling.  The structure of the attribute     type is deliberately not exposed.  */  typedef union  { -  struct +  struct __pthread_mutex_s    {      int __lock;      unsigned int __count; @@ -70,10 +82,18 @@ typedef union      /* KIND must stay at this position in the structure to maintain         binary compatibility.  */      int __kind; -#if _MIPS_SIM != _ABI64 +#if _MIPS_SIM == _ABI64 +    int __spins; +    __pthread_list_t __list; +# define __PTHREAD_MUTEX_HAVE_PREV      1 +#else      unsigned int __nusers; +    __extension__ union +    { +      int __spins; +      __pthread_slist_t __list; +    };  #endif -    int __spins;    } __data;    char __size[__SIZEOF_PTHREAD_MUTEX_T];    long int __align; diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h b/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h index 90c069569..c94ed0c38 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h @@ -57,12 +57,24 @@ typedef union    long int __align;  } pthread_attr_t; +#if __WORDSIZE == 64 +typedef struct __pthread_internal_list +{ +  struct __pthread_internal_list *__prev; +  struct __pthread_internal_list *__next; +} __pthread_list_t; +#else +typedef struct __pthread_internal_slist +{ +  struct __pthread_internal_slist *__next; +} __pthread_slist_t; +#endif  /* Data structures for mutex handling.  The structure of the attribute     type is deliberately not exposed.  */  typedef union  { -  struct +  struct __pthread_mutex_s    {      int __lock;      unsigned int __count; @@ -73,10 +85,18 @@ 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; +    __pthread_list_t __list; +# define __PTHREAD_MUTEX_HAVE_PREV      1 +#else      unsigned int __nusers; +    __extension__ union +    { +      int __spins; +      __pthread_slist_t __list; +    };  #endif -    int __spins;    } __data;    char __size[__SIZEOF_PTHREAD_MUTEX_T];    long int __align; diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h b/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h index 3c5a28944..459d1ca79 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h @@ -58,11 +58,25 @@ typedef union  } pthread_attr_t; +#if __WORDSIZE == 64 +typedef struct __pthread_internal_list +{ +  struct __pthread_internal_list *__prev; +  struct __pthread_internal_list *__next; +} __pthread_list_t; +#else +typedef struct __pthread_internal_slist +{ +  struct __pthread_internal_slist *__next; +} __pthread_slist_t; +#endif + +  /* Data structures for mutex handling.  The structure of the attribute     type is deliberately not exposed.  */  typedef union  { -  struct +  struct __pthread_mutex_s    {      int __lock;      unsigned int __count; @@ -73,10 +87,18 @@ 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; +    __pthread_list_t __list; +# define __PTHREAD_MUTEX_HAVE_PREV      1 +#else      unsigned int __nusers; +    __extension__ union +    { +      int __spins; +      __pthread_slist_t __list; +    };  #endif -    int __spins;    } __data;    char __size[__SIZEOF_PTHREAD_MUTEX_T];    long int __align; diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h index 92fb08c95..51fdab0fb 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h @@ -57,6 +57,20 @@ typedef union  } pthread_attr_t; +#if __WORDSIZE == 64 +typedef struct __pthread_internal_list +{ +  struct __pthread_internal_list *__prev; +  struct __pthread_internal_list *__next; +} __pthread_list_t; +#else +typedef struct __pthread_internal_slist +{ +  struct __pthread_internal_slist *__next; +} __pthread_slist_t; +#endif + +  /* Data structures for mutex handling.  The structure of the attribute     type is not exposed on purpose.  */  typedef union  | 
