]> git.ipfire.org Git - thirdparty/glibc.git/blame - sysdeps/unix/sysv/linux/arm/nptl/bits/pthreadtypes.h
m68k: remove unused fpu switch implementation
[thirdparty/glibc.git] / sysdeps / unix / sysv / linux / arm / nptl / bits / pthreadtypes.h
CommitLineData
a8839787 1/* Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
02a9f771
DJ
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
30efab51
DJ
22#include <endian.h>
23
02a9f771
DJ
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. */
38typedef unsigned long int pthread_t;
39
40
41typedef union
42{
43 char __size[__SIZEOF_PTHREAD_ATTR_T];
44 long int __align;
45} pthread_attr_t;
46
47
a8839787
DJ
48typedef struct __pthread_internal_slist
49{
50 struct __pthread_internal_slist *__next;
51} __pthread_slist_t;
52
53
02a9f771
DJ
54/* Data structures for mutex handling. The structure of the attribute
55 type is not exposed on purpose. */
56typedef union
57{
a8839787 58 struct __pthread_mutex_s
02a9f771
DJ
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;
a8839787
DJ
67 __extension__ union
68 {
69 int __spins;
70 __pthread_slist_t __list;
71 };
02a9f771
DJ
72 } __data;
73 char __size[__SIZEOF_PTHREAD_MUTEX_T];
74 long int __align;
75} pthread_mutex_t;
76
77typedef 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. */
86typedef union
87{
88 struct
89 {
90 int __lock;
91 unsigned int __futex;
a8839787
DJ
92 __extension__ unsigned long long int __total_seq;
93 __extension__ unsigned long long int __wakeup_seq;
94 __extension__ unsigned long long int __woken_seq;
02a9f771
DJ
95 void *__mutex;
96 unsigned int __nwaiters;
97 unsigned int __broadcast_seq;
98 } __data;
99 char __size[__SIZEOF_PTHREAD_COND_T];
a8839787 100 __extension__ long long int __align;
02a9f771
DJ
101} pthread_cond_t;
102
103typedef 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 */
111typedef unsigned int pthread_key_t;
112
113
114/* Once-only execution */
115typedef 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. */
121typedef 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;
30efab51
DJ
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
02a9f771
DJ
139 /* FLAGS must stay at this position in the structure to maintain
140 binary compatibility. */
30efab51
DJ
141 unsigned char __flags;
142 unsigned char __shared;
143 unsigned char __pad1;
144 unsigned char __pad2;
145#endif
02a9f771
DJ
146 int __writer;
147 } __data;
148 char __size[__SIZEOF_PTHREAD_RWLOCK_T];
149 long int __align;
150} pthread_rwlock_t;
151
152typedef 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. */
162typedef volatile int pthread_spinlock_t;
163
164
165/* POSIX barriers data type. The structure of the type is
166 deliberately not exposed. */
167typedef union
168{
169 char __size[__SIZEOF_PTHREAD_BARRIER_T];
170 long int __align;
171} pthread_barrier_t;
172
173typedef 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 */