~ubuntu-branches/ubuntu/natty/eglibc/natty-security

« back to all changes in this revision

Viewing changes to ports/sysdeps/unix/sysv/linux/arm/nptl/bits/pthreadtypes.h

  • Committer: Bazaar Package Importer
  • Author(s): Aurelien Jarno
  • Date: 2009-05-05 09:54:14 UTC
  • Revision ID: james.westby@ubuntu.com-20090505095414-c45qsg9ixjheohru
ImportĀ upstreamĀ versionĀ 2.9

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
 
2
   This file is part of the GNU C Library.
 
3
 
 
4
   The GNU C Library is free software; you can redistribute it and/or
 
5
   modify it under the terms of the GNU Lesser General Public
 
6
   License as published by the Free Software Foundation; either
 
7
   version 2.1 of the License, or (at your option) any later version.
 
8
 
 
9
   The GNU C Library is distributed in the hope that it will be useful,
 
10
   but WITHOUT ANY WARRANTY; without even the implied warranty of
 
11
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
12
   Lesser General Public License for more details.
 
13
 
 
14
   You should have received a copy of the GNU Lesser General Public
 
15
   License along with the GNU C Library; if not, write to the Free
 
16
   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
 
17
   02111-1307 USA.  */
 
18
 
 
19
#ifndef _BITS_PTHREADTYPES_H
 
20
#define _BITS_PTHREADTYPES_H    1
 
21
 
 
22
#include <endian.h>
 
23
 
 
24
#define __SIZEOF_PTHREAD_ATTR_T 36
 
25
#define __SIZEOF_PTHREAD_MUTEX_T 24
 
26
#define __SIZEOF_PTHREAD_MUTEXATTR_T 4
 
27
#define __SIZEOF_PTHREAD_COND_T 48
 
28
#define __SIZEOF_PTHREAD_COND_COMPAT_T 12
 
29
#define __SIZEOF_PTHREAD_CONDATTR_T 4
 
30
#define __SIZEOF_PTHREAD_RWLOCK_T 32
 
31
#define __SIZEOF_PTHREAD_RWLOCKATTR_T 8
 
32
#define __SIZEOF_PTHREAD_BARRIER_T 20
 
33
#define __SIZEOF_PTHREAD_BARRIERATTR_T 4
 
34
 
 
35
 
 
36
/* Thread identifiers.  The structure of the attribute type is not
 
37
   exposed on purpose.  */
 
38
typedef unsigned long int pthread_t;
 
39
 
 
40
 
 
41
typedef union
 
42
{
 
43
  char __size[__SIZEOF_PTHREAD_ATTR_T];
 
44
  long int __align;
 
45
} pthread_attr_t;
 
46
 
 
47
 
 
48
typedef struct __pthread_internal_slist
 
49
{
 
50
  struct __pthread_internal_slist *__next;
 
51
} __pthread_slist_t;
 
52
 
 
53
 
 
54
/* Data structures for mutex handling.  The structure of the attribute
 
55
   type is not exposed on purpose.  */
 
56
typedef union
 
57
{
 
58
  struct __pthread_mutex_s
 
59
  {
 
60
    int __lock;
 
61
    unsigned int __count;
 
62
    int __owner;
 
63
    /* KIND must stay at this position in the structure to maintain
 
64
       binary compatibility.  */
 
65
    int __kind;
 
66
    unsigned int __nusers;
 
67
    __extension__ union
 
68
    {
 
69
      int __spins;
 
70
      __pthread_slist_t __list;
 
71
    };
 
72
  } __data;
 
73
  char __size[__SIZEOF_PTHREAD_MUTEX_T];
 
74
  long int __align;
 
75
} pthread_mutex_t;
 
76
 
 
77
typedef union
 
78
{
 
79
  char __size[__SIZEOF_PTHREAD_MUTEXATTR_T];
 
80
  long int __align;
 
81
} pthread_mutexattr_t;
 
82
 
 
83
 
 
84
/* Data structure for conditional variable handling.  The structure of
 
85
   the attribute type is not exposed on purpose.  */
 
86
typedef union
 
87
{
 
88
  struct
 
89
  {
 
90
    int __lock;
 
91
    unsigned int __futex;
 
92
    __extension__ unsigned long long int __total_seq;
 
93
    __extension__ unsigned long long int __wakeup_seq;
 
94
    __extension__ unsigned long long int __woken_seq;
 
95
    void *__mutex;
 
96
    unsigned int __nwaiters;
 
97
    unsigned int __broadcast_seq;
 
98
  } __data;
 
99
  char __size[__SIZEOF_PTHREAD_COND_T];
 
100
  __extension__ long long int __align;
 
101
} pthread_cond_t;
 
102
 
 
103
typedef union
 
104
{
 
105
  char __size[__SIZEOF_PTHREAD_CONDATTR_T];
 
106
  long int __align;
 
107
} pthread_condattr_t;
 
108
 
 
109
 
 
110
/* Keys for thread-specific data */
 
111
typedef unsigned int pthread_key_t;
 
112
 
 
113
 
 
114
/* Once-only execution */
 
115
typedef int pthread_once_t;
 
116
 
 
117
 
 
118
#if defined __USE_UNIX98 || defined __USE_XOPEN2K
 
119
/* Data structure for read-write lock variable handling.  The
 
120
   structure of the attribute type is not exposed on purpose.  */
 
121
typedef union
 
122
{
 
123
  struct
 
124
  {
 
125
    int __lock;
 
126
    unsigned int __nr_readers;
 
127
    unsigned int __readers_wakeup;
 
128
    unsigned int __writer_wakeup;
 
129
    unsigned int __nr_readers_queued;
 
130
    unsigned int __nr_writers_queued;
 
131
#if __BYTE_ORDER == __BIG_ENDIAN
 
132
    unsigned char __pad1;
 
133
    unsigned char __pad2;
 
134
    unsigned char __shared;
 
135
    /* FLAGS must stay at this position in the structure to maintain
 
136
       binary compatibility.  */
 
137
    unsigned char __flags;
 
138
#else
 
139
    /* FLAGS must stay at this position in the structure to maintain
 
140
       binary compatibility.  */
 
141
    unsigned char __flags;
 
142
    unsigned char __shared;
 
143
    unsigned char __pad1;
 
144
    unsigned char __pad2;
 
145
#endif
 
146
    int __writer;
 
147
  } __data;
 
148
  char __size[__SIZEOF_PTHREAD_RWLOCK_T];
 
149
  long int __align;
 
150
} pthread_rwlock_t;
 
151
 
 
152
typedef union
 
153
{
 
154
  char __size[__SIZEOF_PTHREAD_RWLOCKATTR_T];
 
155
  long int __align;
 
156
} pthread_rwlockattr_t;
 
157
#endif
 
158
 
 
159
 
 
160
#ifdef __USE_XOPEN2K
 
161
/* POSIX spinlock data type.  */
 
162
typedef volatile int pthread_spinlock_t;
 
163
 
 
164
 
 
165
/* POSIX barriers data type.  The structure of the type is
 
166
   deliberately not exposed.  */
 
167
typedef union
 
168
{
 
169
  char __size[__SIZEOF_PTHREAD_BARRIER_T];
 
170
  long int __align;
 
171
} pthread_barrier_t;
 
172
 
 
173
typedef union
 
174
{
 
175
  char __size[__SIZEOF_PTHREAD_BARRIERATTR_T];
 
176
  int __align;
 
177
} pthread_barrierattr_t;
 
178
#endif
 
179
 
 
180
 
 
181
#endif  /* bits/pthreadtypes.h */