1 /* lthread.h - ldap threads header file */
8 #if defined( HAVE_PTHREADS )
9 /**********************************
11 * definitions for POSIX Threads *
13 **********************************/
22 #if !defined( HAVE_PTHREAD_ATTR_INIT ) && \
23 defined( HAVE_PTHREAD_ATTR_CREATE )
24 #define pthread_attr_init( a ) pthread_attr_create( a )
27 #if !defined( HAVE_PTHREAD_ATTR_DESTROY ) && \
28 defined( HAVE_PTHREAD_ATTR_DELETE )
29 #define pthread_attr_destroy( a ) pthread_attr_delete( a )
32 #if !defined( HAVE_PTHREAD_ATTR_SETDETACHSTATE ) && \
33 defined( HAVE_PTHREAD_ATTR_SETDETACH_NP )
34 #define pthread_attr_setdetachstate( a, b ) \
35 pthread_attr_setdetach_np( a, b )
38 #ifndef HAVE_PTHREAD_KILL
39 /* missing pthread_kill(), define prototype */
40 LDAP_F void pthread_kill LDAP_P(( pthread_t tid, int sig ));
43 #ifndef HAVE_PTHREADS_D4
44 #define pthread_mutexattr_default NULL
45 #define pthread_condattr_default NULL
47 #ifdef HAVE_SCHED_YIELD
48 #define pthread_yield sched_yield
54 #elif defined ( HAVE_MACH_CTHREADS )
55 /**********************************
57 * definitions for Mach CThreads *
59 **********************************/
61 #include <mach/cthreads.h>
65 typedef cthread_fn_t VFP;
66 typedef int pthread_attr_t;
67 typedef cthread_t pthread_t;
69 /* default attr states */
70 #define pthread_mutexattr_default NULL
71 #define pthread_condattr_default NULL
73 /* thread state - joinable or not */
74 #define PTHREAD_CREATE_JOINABLE 0
75 #define PTHREAD_CREATE_DETACHED 1
76 /* thread scope - who is in scheduling pool */
77 #define PTHREAD_SCOPE_PROCESS 0
78 #define PTHREAD_SCOPE_SYSTEM 1
80 /* mutex attributes and mutex type */
81 typedef int pthread_mutexattr_t;
82 typedef struct mutex pthread_mutex_t;
84 /* mutex and condition variable scope - process or system */
85 #define PTHREAD_SHARE_PRIVATE 0
86 #define PTHREAD_SHARE_PROCESS 1
88 /* condition variable attributes and condition variable type */
89 typedef int pthread_condattr_t;
90 typedef struct condition pthread_cond_t;
94 #elif defined( HAVE_THR )
95 /**************************************
97 * thread definitions for Solaris LWP *
99 **************************************/
106 typedef void *(*VFP)();
108 /* default attr states */
109 #define pthread_mutexattr_default NULL
110 #define pthread_condattr_default NULL
112 /* thread state - joinable or not */
113 #define PTHREAD_CREATE_JOINABLE 0
114 #define PTHREAD_CREATE_DETACHED THR_DETACHED
115 /* thread scope - who is in scheduling pool */
116 #define PTHREAD_SCOPE_PROCESS 0
117 #define PTHREAD_SCOPE_SYSTEM THR_BOUND
118 /* mutex and condition variable scope - process or system */
119 #define PTHREAD_SHARE_PRIVATE USYNC_THREAD
120 #define PTHREAD_SHARE_PROCESS USYNC_PROCESS
123 #if !defined(__SunOS_5_6)
124 /* thread attributes and thread type */
125 typedef int pthread_attr_t;
126 typedef thread_t pthread_t;
128 /* mutex attributes and mutex type */
129 typedef int pthread_mutexattr_t;
130 typedef mutex_t pthread_mutex_t;
132 /* condition variable attributes and condition variable type */
133 typedef int pthread_condattr_t;
134 typedef cond_t pthread_cond_t;
135 #endif /* ! sunos56 */
139 #elif defined( HAVE_LWP )
140 /*************************************
142 * thread definitions for SunOS LWP *
144 *************************************/
147 #include <lwp/stackdep.h>
151 stkalign_t *get_stack( int *stacknop );
152 void free_stack( int *stackno );
154 typedef void *(*VFP)();
156 /* thread attributes and thread type */
157 typedef int pthread_attr_t;
158 typedef thread_t pthread_t;
160 /* default attr states */
161 #define pthread_mutexattr_default NULL
162 #define pthread_condattr_default NULL
164 /* thread state - joinable or not */
165 #define PTHREAD_CREATE_JOINABLE 0
166 #define PTHREAD_CREATE_DETACHED 1
167 /* thread scope - who is in scheduling pool */
168 #define PTHREAD_SCOPE_PROCESS 0
169 #define PTHREAD_SCOPE_SYSTEM 1
171 /* mutex attributes and mutex type */
172 typedef int pthread_mutexattr_t;
173 typedef mon_t pthread_mutex_t;
175 /* mutex and condition variable scope - process or system */
176 #define PTHREAD_SHARE_PRIVATE 0
177 #define PTHREAD_SHARE_PROCESS 1
179 /* condition variable attributes and condition variable type */
180 typedef int pthread_condattr_t;
181 typedef struct lwpcv {
190 /***********************************
192 * thread definitions for no *
193 * underlying library support *
195 ***********************************/
203 #ifndef PREEMPTIVE_THREADS
204 /* treat no threads as preemptive */
205 #define PREEMPTIVE_THREADS 1
208 typedef void *(*VFP)();
210 /* thread attributes and thread type */
211 typedef int pthread_attr_t;
212 typedef int pthread_t;
214 /* default attr states */
215 #define pthread_mutexattr_default NULL
216 #define pthread_condattr_default NULL
218 /* thread state - joinable or not */
219 #define PTHREAD_CREATE_JOINABLE 0
220 #define PTHREAD_CREATE_DETACHED 0
221 /* thread scope - who is in scheduling pool */
222 #define PTHREAD_SCOPE_PROCESS 0
223 #define PTHREAD_SCOPE_SYSTEM 0
225 /* mutex attributes and mutex type */
226 typedef int pthread_mutexattr_t;
227 typedef int pthread_mutex_t;
229 /* mutex and condition variable scope - process or system */
230 #define PTHREAD_SHARE_PRIVATE 0
231 #define PTHREAD_SHARE_PROCESS 0
233 /* condition variable attributes and condition variable type */
234 typedef int pthread_condattr_t;
235 typedef int pthread_cond_t;
239 #endif /* no threads support */
240 #endif /* _LTHREAD_H */