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 typedef void *(*VFP)();
153 /* thread attributes and thread type */
154 typedef int pthread_attr_t;
155 typedef thread_t pthread_t;
157 /* default attr states */
158 #define pthread_mutexattr_default NULL
159 #define pthread_condattr_default NULL
161 /* thread state - joinable or not */
162 #define PTHREAD_CREATE_JOINABLE 0
163 #define PTHREAD_CREATE_DETACHED 1
164 /* thread scope - who is in scheduling pool */
165 #define PTHREAD_SCOPE_PROCESS 0
166 #define PTHREAD_SCOPE_SYSTEM 1
168 /* mutex attributes and mutex type */
169 typedef int pthread_mutexattr_t;
170 typedef mon_t pthread_mutex_t;
172 /* mutex and condition variable scope - process or system */
173 #define PTHREAD_SHARE_PRIVATE 0
174 #define PTHREAD_SHARE_PROCESS 1
176 /* condition variable attributes and condition variable type */
177 typedef int pthread_condattr_t;
178 typedef struct lwpcv {
187 /***********************************
189 * thread definitions for no *
190 * underlying library support *
192 ***********************************/
200 #ifndef PREEMPTIVE_THREADS
201 /* treat no threads as preemptive */
202 #define PREEMPTIVE_THREADS 1
205 typedef void *(*VFP)();
207 /* thread attributes and thread type */
208 typedef int pthread_attr_t;
209 typedef int pthread_t;
211 /* default attr states */
212 #define pthread_mutexattr_default NULL
213 #define pthread_condattr_default NULL
215 /* thread state - joinable or not */
216 #define PTHREAD_CREATE_JOINABLE 0
217 #define PTHREAD_CREATE_DETACHED 0
218 /* thread scope - who is in scheduling pool */
219 #define PTHREAD_SCOPE_PROCESS 0
220 #define PTHREAD_SCOPE_SYSTEM 0
222 /* mutex attributes and mutex type */
223 typedef int pthread_mutexattr_t;
224 typedef int pthread_mutex_t;
226 /* mutex and condition variable scope - process or system */
227 #define PTHREAD_SHARE_PRIVATE 0
228 #define PTHREAD_SHARE_PROCESS 0
230 /* condition variable attributes and condition variable type */
231 typedef int pthread_condattr_t;
232 typedef int pthread_cond_t;
236 #endif /* no threads support */
237 #endif /* _LTHREAD_H */