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
122 /* thread attributes and thread type */
123 typedef int pthread_attr_t;
124 typedef thread_t pthread_t;
126 /* mutex attributes and mutex type */
127 typedef int pthread_mutexattr_t;
128 typedef mutex_t pthread_mutex_t;
130 /* condition variable attributes and condition variable type */
131 typedef int pthread_condattr_t;
132 typedef cond_t pthread_cond_t;
136 #elif defined( HAVE_LWP )
137 /*************************************
139 * thread definitions for SunOS LWP *
141 *************************************/
144 #include <lwp/stackdep.h>
148 stkalign_t *get_stack( int *stacknop );
149 void free_stack( int *stackno );
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 typedef void *(*VFP)();
202 /* thread attributes and thread type */
203 typedef int pthread_attr_t;
204 typedef int pthread_t;
206 /* default attr states */
207 #define pthread_mutexattr_default NULL
208 #define pthread_condattr_default NULL
210 /* thread state - joinable or not */
211 #define PTHREAD_CREATE_JOINABLE 0
212 #define PTHREAD_CREATE_DETACHED 0
213 /* thread scope - who is in scheduling pool */
214 #define PTHREAD_SCOPE_PROCESS 0
215 #define PTHREAD_SCOPE_SYSTEM 0
217 /* mutex attributes and mutex type */
218 typedef int pthread_mutexattr_t;
219 typedef int pthread_mutex_t;
221 /* mutex and condition variable scope - process or system */
222 #define PTHREAD_SHARE_PRIVATE 0
223 #define PTHREAD_SHARE_PROCESS 0
225 /* condition variable attributes and condition variable type */
226 typedef int pthread_condattr_t;
227 typedef int pthread_cond_t;
231 #endif /* no threads support */
232 #endif /* _LTHREAD_H */