]> git.sur5r.net Git - openldap/blob - include/lthread.h
integrated changed from rage.net glibc.patch
[openldap] / include / lthread.h
1 /* lthread.h - ldap threads header file */
2
3 #ifndef _LTHREAD_H
4 #define _LTHREAD_H
5
6 #if defined ( THREAD_NEXT_CTHREADS )
7
8 #define _THREAD
9
10 #include <mach/cthreads.h>
11
12 typedef cthread_fn_t    VFP;
13 typedef int             pthread_attr_t;
14 typedef cthread_t       pthread_t;
15
16 /* default attr states */
17 #define pthread_mutexattr_default       NULL
18 #define pthread_condattr_default        NULL
19
20 /* thread state - joinable or not */
21 #define PTHREAD_CREATE_JOINABLE 0
22 #define PTHREAD_CREATE_DETACHED 1
23 /* thread scope - who is in scheduling pool */
24 #define PTHREAD_SCOPE_PROCESS   0
25 #define PTHREAD_SCOPE_SYSTEM    1
26
27 /* mutex attributes and mutex type */
28 typedef int     pthread_mutexattr_t;
29 typedef struct mutex pthread_mutex_t;
30
31 /* mutex and condition variable scope - process or system */
32 #define PTHREAD_SHARE_PRIVATE   0
33 #define PTHREAD_SHARE_PROCESS   1
34
35 /* condition variable attributes and condition variable type */
36 typedef int     pthread_condattr_t;
37 typedef struct condition pthread_cond_t;
38
39 #elif defined( THREAD_SUNOS4_LWP )
40 /***********************************
41  *                                 *
42  * thread definitions for sunos4   *
43  *                                 *
44  ***********************************/
45
46 #define _THREAD
47
48 #include <lwp/lwp.h>
49 #include <lwp/stackdep.h>
50
51 typedef void    *(*VFP)();
52
53 /* thread attributes and thread type */
54 typedef int             pthread_attr_t;
55 typedef thread_t        pthread_t;
56
57 /* default attr states */
58 #define pthread_mutexattr_default       NULL
59 #define pthread_condattr_default        NULL
60
61 /* thread state - joinable or not */
62 #define PTHREAD_CREATE_JOINABLE 0
63 #define PTHREAD_CREATE_DETACHED 1
64 /* thread scope - who is in scheduling pool */
65 #define PTHREAD_SCOPE_PROCESS   0
66 #define PTHREAD_SCOPE_SYSTEM    1
67
68 /* mutex attributes and mutex type */
69 typedef int     pthread_mutexattr_t;
70 typedef mon_t   pthread_mutex_t;
71
72 /* mutex and condition variable scope - process or system */
73 #define PTHREAD_SHARE_PRIVATE   0
74 #define PTHREAD_SHARE_PROCESS   1
75
76 /* condition variable attributes and condition variable type */
77 typedef int     pthread_condattr_t;
78 typedef struct lwpcv {
79         int             lcv_created;
80         cv_t            lcv_cv;
81 } pthread_cond_t;
82
83 #else /* end sunos4 */
84
85 #if defined( THREAD_SUNOS5_LWP )
86 /***********************************
87  *                                 *
88  * thread definitions for sunos5   *
89  *                                 *
90  ***********************************/
91
92 #define _THREAD
93
94 #include <thread.h>
95 #include <synch.h>
96
97 typedef void    *(*VFP)();
98
99 /* sunos5 threads are preemptive */
100 #define PTHREAD_PREEMPTIVE      1
101
102 /* thread attributes and thread type */
103 typedef int             pthread_attr_t;
104 typedef thread_t        pthread_t;
105
106 /* default attr states */
107 #define pthread_mutexattr_default       NULL
108 #define pthread_condattr_default        NULL
109
110 /* thread state - joinable or not */
111 #define PTHREAD_CREATE_JOINABLE 0
112 #define PTHREAD_CREATE_DETACHED THR_DETACHED
113 /* thread scope - who is in scheduling pool */
114 #define PTHREAD_SCOPE_PROCESS   0
115 #define PTHREAD_SCOPE_SYSTEM    THR_BOUND
116
117 /* mutex attributes and mutex type */
118 typedef int     pthread_mutexattr_t;
119 typedef mutex_t pthread_mutex_t;
120
121 /* mutex and condition variable scope - process or system */
122 #define PTHREAD_SHARE_PRIVATE   USYNC_THREAD
123 #define PTHREAD_SHARE_PROCESS   USYNC_PROCESS
124
125 /* condition variable attributes and condition variable type */
126 typedef int     pthread_condattr_t;
127 typedef cond_t  pthread_cond_t;
128
129 #else /* end sunos5 */
130
131 #if defined( THREAD_MIT_PTHREADS )
132 /***********************************
133  *                                 *
134  * definitions for mit pthreads    *
135  *                                 *
136  ***********************************/
137
138 #define _THREAD
139
140 #include <pthread.h>
141
142 #else /* end mit pthreads */
143
144 #if defined( THREAD_DCE_PTHREADS )
145 /***********************************
146  *                                 *
147  * definitions for mit pthreads    *
148  *                                 *
149  ***********************************/
150
151 #define _THREAD
152
153 #include <pthread.h>
154
155 /* dce threads are preemptive */
156 #define PTHREAD_PREEMPTIVE      1
157
158 #define pthread_attr_init( a )          pthread_attr_create( a )
159 #define pthread_attr_destroy( a )       pthread_attr_delete( a )
160 #define pthread_attr_setdetachstate( a, b ) \
161                                         pthread_attr_setdetach_np( a, b )
162
163 #else /* end dce pthreads */
164
165 #if defined( POSIX_THREADS )
166
167 #define _THREAD
168
169 #include <pthread.h>
170
171 #define pthread_mutexattr_default       NULL
172 #define pthread_condattr_default        NULL
173
174 #endif /* posix threads */
175 #endif /* dce pthreads */
176 #endif /* mit pthreads */
177 #endif /* sunos5 */
178 #endif /* sunos4 */
179
180 #ifndef _THREAD
181
182 /***********************************
183  *                                 *
184  * thread definitions for no       *
185  * underlying library support      *
186  *                                 *
187  ***********************************/
188
189 typedef void    *(*VFP)();
190
191 /* thread attributes and thread type */
192 typedef int     pthread_attr_t;
193 typedef int     pthread_t;
194
195 /* default attr states */
196 #define pthread_mutexattr_default       NULL
197 #define pthread_condattr_default        NULL
198
199 /* thread state - joinable or not */
200 #define PTHREAD_CREATE_JOINABLE 0
201 #define PTHREAD_CREATE_DETACHED 0
202 /* thread scope - who is in scheduling pool */
203 #define PTHREAD_SCOPE_PROCESS   0
204 #define PTHREAD_SCOPE_SYSTEM    0
205
206 /* mutex attributes and mutex type */
207 typedef int     pthread_mutexattr_t;
208 typedef int     pthread_mutex_t;
209
210 /* mutex and condition variable scope - process or system */
211 #define PTHREAD_SHARE_PRIVATE   0
212 #define PTHREAD_SHARE_PROCESS   0
213
214 /* condition variable attributes and condition variable type */
215 typedef int     pthread_condattr_t;
216 typedef int     pthread_cond_t;
217
218 #endif /* no threads support */
219 #endif /* _LTHREAD_H */