Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
wine-mirror
GitHub Repository: wine-mirror/wine
Path: blob/master/libs/ldap/include/ldap_pvt_thread.h
4394 views
1
/* ldap_pvt_thread.h - ldap threads header file */
2
/* $OpenLDAP$ */
3
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
4
*
5
* Copyright 1998-2024 The OpenLDAP Foundation.
6
* All rights reserved.
7
*
8
* Redistribution and use in source and binary forms, with or without
9
* modification, are permitted only as authorized by the OpenLDAP
10
* Public License.
11
*
12
* A copy of this license is available in file LICENSE in the
13
* top-level directory of the distribution or, alternatively, at
14
* <http://www.OpenLDAP.org/license.html>.
15
*/
16
17
#ifndef _LDAP_PVT_THREAD_H
18
#define _LDAP_PVT_THREAD_H /* libldap/ldap_thr_debug.h #undefines this */
19
20
#include "ldap_cdefs.h"
21
#include "ldap_int_thread.h"
22
23
LDAP_BEGIN_DECL
24
25
#ifndef LDAP_PVT_THREAD_H_DONE
26
typedef ldap_int_thread_t ldap_pvt_thread_t;
27
#ifdef LDAP_THREAD_DEBUG_WRAP
28
typedef ldap_debug_thread_mutex_t ldap_pvt_thread_mutex_t;
29
typedef ldap_debug_thread_cond_t ldap_pvt_thread_cond_t;
30
typedef ldap_debug_thread_rdwr_t ldap_pvt_thread_rdwr_t;
31
#define LDAP_PVT_MUTEX_FIRSTCREATE LDAP_DEBUG_MUTEX_FIRSTCREATE
32
#define LDAP_PVT_MUTEX_NULL LDAP_DEBUG_MUTEX_NULL
33
#else
34
typedef ldap_int_thread_mutex_t ldap_pvt_thread_mutex_t;
35
typedef ldap_int_thread_cond_t ldap_pvt_thread_cond_t;
36
typedef ldap_int_thread_rdwr_t ldap_pvt_thread_rdwr_t;
37
#define LDAP_PVT_MUTEX_FIRSTCREATE LDAP_INT_MUTEX_FIRSTCREATE
38
#define LDAP_PVT_MUTEX_NULL LDAP_INT_MUTEX_NULL
39
#endif
40
typedef ldap_int_thread_key_t ldap_pvt_thread_key_t;
41
#endif /* !LDAP_PVT_THREAD_H_DONE */
42
43
#define ldap_pvt_thread_equal ldap_int_thread_equal
44
45
LDAP_F( int )
46
ldap_pvt_thread_initialize LDAP_P(( void ));
47
48
LDAP_F( int )
49
ldap_pvt_thread_destroy LDAP_P(( void ));
50
51
LDAP_F( unsigned int )
52
ldap_pvt_thread_sleep LDAP_P(( unsigned int s ));
53
54
LDAP_F( int )
55
ldap_pvt_thread_get_concurrency LDAP_P(( void ));
56
57
LDAP_F( int )
58
ldap_pvt_thread_set_concurrency LDAP_P(( int ));
59
60
#define LDAP_PVT_THREAD_CREATE_JOINABLE 0
61
#define LDAP_PVT_THREAD_CREATE_DETACHED 1
62
63
#ifndef LDAP_PVT_THREAD_H_DONE
64
#define LDAP_PVT_THREAD_SET_STACK_SIZE
65
/* The size may be explicitly #defined to zero to disable it. */
66
#if defined( LDAP_PVT_THREAD_STACK_SIZE ) && LDAP_PVT_THREAD_STACK_SIZE == 0
67
# undef LDAP_PVT_THREAD_SET_STACK_SIZE
68
#elif !defined( LDAP_PVT_THREAD_STACK_SIZE )
69
/* LARGE stack. Will be twice as large on 64 bit machine. */
70
# define LDAP_PVT_THREAD_STACK_SIZE ( 1 * 1024 * 1024 * sizeof(void *) )
71
#endif
72
#endif /* !LDAP_PVT_THREAD_H_DONE */
73
74
LDAP_F( int )
75
ldap_pvt_thread_create LDAP_P((
76
ldap_pvt_thread_t * thread,
77
int detach,
78
void *(*start_routine)( void * ),
79
void *arg));
80
81
LDAP_F( void )
82
ldap_pvt_thread_exit LDAP_P(( void *retval ));
83
84
LDAP_F( int )
85
ldap_pvt_thread_join LDAP_P(( ldap_pvt_thread_t thread, void **status ));
86
87
LDAP_F( int )
88
ldap_pvt_thread_kill LDAP_P(( ldap_pvt_thread_t thread, int signo ));
89
90
LDAP_F( int )
91
ldap_pvt_thread_yield LDAP_P(( void ));
92
93
LDAP_F( int )
94
ldap_pvt_thread_cond_init LDAP_P(( ldap_pvt_thread_cond_t *cond ));
95
96
LDAP_F( int )
97
ldap_pvt_thread_cond_destroy LDAP_P(( ldap_pvt_thread_cond_t *cond ));
98
99
LDAP_F( int )
100
ldap_pvt_thread_cond_signal LDAP_P(( ldap_pvt_thread_cond_t *cond ));
101
102
LDAP_F( int )
103
ldap_pvt_thread_cond_broadcast LDAP_P(( ldap_pvt_thread_cond_t *cond ));
104
105
LDAP_F( int )
106
ldap_pvt_thread_cond_wait LDAP_P((
107
ldap_pvt_thread_cond_t *cond,
108
ldap_pvt_thread_mutex_t *mutex ));
109
110
LDAP_F( int )
111
ldap_pvt_thread_mutex_init LDAP_P(( ldap_pvt_thread_mutex_t *mutex ));
112
113
LDAP_F( int )
114
ldap_pvt_thread_mutex_recursive_init LDAP_P(( ldap_pvt_thread_mutex_t *mutex ));
115
116
LDAP_F( int )
117
ldap_pvt_thread_mutex_destroy LDAP_P(( ldap_pvt_thread_mutex_t *mutex ));
118
119
LDAP_F( int )
120
ldap_pvt_thread_mutex_lock LDAP_P(( ldap_pvt_thread_mutex_t *mutex ));
121
122
LDAP_F( int )
123
ldap_pvt_thread_mutex_trylock LDAP_P(( ldap_pvt_thread_mutex_t *mutex ));
124
125
LDAP_F( int )
126
ldap_pvt_thread_mutex_unlock LDAP_P(( ldap_pvt_thread_mutex_t *mutex ));
127
128
LDAP_F( ldap_pvt_thread_t )
129
ldap_pvt_thread_self LDAP_P(( void ));
130
131
#ifdef LDAP_INT_THREAD_ASSERT_MUTEX_OWNER
132
#define LDAP_PVT_THREAD_ASSERT_MUTEX_OWNER LDAP_INT_THREAD_ASSERT_MUTEX_OWNER
133
#else
134
#define LDAP_PVT_THREAD_ASSERT_MUTEX_OWNER(mutex) ((void) 0)
135
#endif
136
137
LDAP_F( int )
138
ldap_pvt_thread_rdwr_init LDAP_P((ldap_pvt_thread_rdwr_t *rdwrp));
139
140
LDAP_F( int )
141
ldap_pvt_thread_rdwr_destroy LDAP_P((ldap_pvt_thread_rdwr_t *rdwrp));
142
143
LDAP_F( int )
144
ldap_pvt_thread_rdwr_rlock LDAP_P((ldap_pvt_thread_rdwr_t *rdwrp));
145
146
LDAP_F( int )
147
ldap_pvt_thread_rdwr_rtrylock LDAP_P((ldap_pvt_thread_rdwr_t *rdwrp));
148
149
LDAP_F( int )
150
ldap_pvt_thread_rdwr_runlock LDAP_P((ldap_pvt_thread_rdwr_t *rdwrp));
151
152
LDAP_F( int )
153
ldap_pvt_thread_rdwr_wlock LDAP_P((ldap_pvt_thread_rdwr_t *rdwrp));
154
155
LDAP_F( int )
156
ldap_pvt_thread_rdwr_wtrylock LDAP_P((ldap_pvt_thread_rdwr_t *rdwrp));
157
158
LDAP_F( int )
159
ldap_pvt_thread_rdwr_wunlock LDAP_P((ldap_pvt_thread_rdwr_t *rdwrp));
160
161
LDAP_F( int )
162
ldap_pvt_thread_key_create LDAP_P((ldap_pvt_thread_key_t *keyp));
163
164
LDAP_F( int )
165
ldap_pvt_thread_key_destroy LDAP_P((ldap_pvt_thread_key_t key));
166
167
LDAP_F( int )
168
ldap_pvt_thread_key_setdata LDAP_P((ldap_pvt_thread_key_t key, void *data));
169
170
LDAP_F( int )
171
ldap_pvt_thread_key_getdata LDAP_P((ldap_pvt_thread_key_t key, void **data));
172
173
#ifdef LDAP_DEBUG
174
LDAP_F( int )
175
ldap_pvt_thread_rdwr_readers LDAP_P((ldap_pvt_thread_rdwr_t *rdwrp));
176
177
LDAP_F( int )
178
ldap_pvt_thread_rdwr_writers LDAP_P((ldap_pvt_thread_rdwr_t *rdwrp));
179
180
LDAP_F( int )
181
ldap_pvt_thread_rdwr_active LDAP_P((ldap_pvt_thread_rdwr_t *rdwrp));
182
#endif /* LDAP_DEBUG */
183
184
#define LDAP_PVT_THREAD_EINVAL EINVAL
185
#define LDAP_PVT_THREAD_EBUSY EINVAL
186
187
#ifndef LDAP_PVT_THREAD_H_DONE
188
typedef ldap_int_thread_pool_t ldap_pvt_thread_pool_t;
189
190
typedef void * (ldap_pvt_thread_start_t) LDAP_P((void *ctx, void *arg));
191
typedef int (ldap_pvt_thread_walk_t) LDAP_P((ldap_pvt_thread_start_t *start, void *start_arg, void *arg));
192
typedef void (ldap_pvt_thread_pool_keyfree_t) LDAP_P((void *key, void *data));
193
#endif /* !LDAP_PVT_THREAD_H_DONE */
194
195
LDAP_F( int )
196
ldap_pvt_thread_pool_init LDAP_P((
197
ldap_pvt_thread_pool_t *pool_out,
198
int max_threads,
199
int max_pending ));
200
201
LDAP_F( int )
202
ldap_pvt_thread_pool_init_q LDAP_P((
203
ldap_pvt_thread_pool_t *pool_out,
204
int max_threads,
205
int max_pending,
206
int num_qs ));
207
208
LDAP_F( int )
209
ldap_pvt_thread_pool_submit LDAP_P((
210
ldap_pvt_thread_pool_t *pool,
211
ldap_pvt_thread_start_t *start,
212
void *arg ));
213
214
LDAP_F( int )
215
ldap_pvt_thread_pool_submit2 LDAP_P((
216
ldap_pvt_thread_pool_t *pool,
217
ldap_pvt_thread_start_t *start,
218
void *arg,
219
void **cookie ));
220
221
LDAP_F( int )
222
ldap_pvt_thread_pool_retract LDAP_P((
223
void *cookie ));
224
225
LDAP_F( int )
226
ldap_pvt_thread_pool_walk LDAP_P((
227
ldap_pvt_thread_pool_t *pool,
228
ldap_pvt_thread_start_t *start,
229
ldap_pvt_thread_walk_t *cb,
230
void *arg ));
231
232
LDAP_F( int )
233
ldap_pvt_thread_pool_maxthreads LDAP_P((
234
ldap_pvt_thread_pool_t *pool,
235
int max_threads ));
236
237
LDAP_F( int )
238
ldap_pvt_thread_pool_queues LDAP_P((
239
ldap_pvt_thread_pool_t *pool,
240
int numqs ));
241
242
#ifndef LDAP_PVT_THREAD_H_DONE
243
typedef enum {
244
LDAP_PVT_THREAD_POOL_PARAM_UNKNOWN = -1,
245
LDAP_PVT_THREAD_POOL_PARAM_MAX,
246
LDAP_PVT_THREAD_POOL_PARAM_MAX_PENDING,
247
LDAP_PVT_THREAD_POOL_PARAM_OPEN,
248
LDAP_PVT_THREAD_POOL_PARAM_STARTING,
249
LDAP_PVT_THREAD_POOL_PARAM_ACTIVE,
250
LDAP_PVT_THREAD_POOL_PARAM_PAUSING,
251
LDAP_PVT_THREAD_POOL_PARAM_PENDING,
252
LDAP_PVT_THREAD_POOL_PARAM_BACKLOAD,
253
LDAP_PVT_THREAD_POOL_PARAM_ACTIVE_MAX,
254
LDAP_PVT_THREAD_POOL_PARAM_PENDING_MAX,
255
LDAP_PVT_THREAD_POOL_PARAM_BACKLOAD_MAX,
256
LDAP_PVT_THREAD_POOL_PARAM_STATE,
257
LDAP_PVT_THREAD_POOL_PARAM_PAUSED
258
} ldap_pvt_thread_pool_param_t;
259
#endif /* !LDAP_PVT_THREAD_H_DONE */
260
261
LDAP_F( int )
262
ldap_pvt_thread_pool_query LDAP_P((
263
ldap_pvt_thread_pool_t *pool,
264
ldap_pvt_thread_pool_param_t param, void *value ));
265
266
LDAP_F( int )
267
ldap_pvt_thread_pool_pausing LDAP_P((
268
ldap_pvt_thread_pool_t *pool ));
269
270
LDAP_F( int )
271
ldap_pvt_thread_pool_backload LDAP_P((
272
ldap_pvt_thread_pool_t *pool ));
273
274
LDAP_F( void )
275
ldap_pvt_thread_pool_idle LDAP_P((
276
ldap_pvt_thread_pool_t *pool ));
277
278
LDAP_F( void )
279
ldap_pvt_thread_pool_unidle LDAP_P((
280
ldap_pvt_thread_pool_t *pool ));
281
282
LDAP_F( int )
283
ldap_pvt_thread_pool_pausecheck LDAP_P((
284
ldap_pvt_thread_pool_t *pool ));
285
286
LDAP_F( int )
287
ldap_pvt_thread_pool_pausecheck_native LDAP_P((
288
ldap_pvt_thread_pool_t *pool ));
289
290
LDAP_F( int )
291
ldap_pvt_thread_pool_pause LDAP_P((
292
ldap_pvt_thread_pool_t *pool ));
293
294
LDAP_F( int )
295
ldap_pvt_thread_pool_resume LDAP_P((
296
ldap_pvt_thread_pool_t *pool ));
297
298
LDAP_F( int )
299
ldap_pvt_thread_pool_destroy LDAP_P((
300
ldap_pvt_thread_pool_t *pool,
301
int run_pending ));
302
303
LDAP_F( int )
304
ldap_pvt_thread_pool_close LDAP_P((
305
ldap_pvt_thread_pool_t *pool,
306
int run_pending ));
307
308
LDAP_F( int )
309
ldap_pvt_thread_pool_free LDAP_P((
310
ldap_pvt_thread_pool_t *pool ));
311
312
LDAP_F( int )
313
ldap_pvt_thread_pool_getkey LDAP_P((
314
void *ctx,
315
void *key,
316
void **data,
317
ldap_pvt_thread_pool_keyfree_t **kfree ));
318
319
LDAP_F( int )
320
ldap_pvt_thread_pool_setkey LDAP_P((
321
void *ctx,
322
void *key,
323
void *data,
324
ldap_pvt_thread_pool_keyfree_t *kfree,
325
void **olddatap,
326
ldap_pvt_thread_pool_keyfree_t **oldkfreep ));
327
328
LDAP_F( void )
329
ldap_pvt_thread_pool_purgekey LDAP_P(( void *key ));
330
331
LDAP_F( void *)
332
ldap_pvt_thread_pool_context LDAP_P(( void ));
333
334
LDAP_F( void )
335
ldap_pvt_thread_pool_context_reset LDAP_P(( void *key ));
336
337
LDAP_F( ldap_pvt_thread_t )
338
ldap_pvt_thread_pool_tid LDAP_P(( void *ctx ));
339
340
LDAP_END_DECL
341
342
#define LDAP_PVT_THREAD_H_DONE
343
#endif /* _LDAP_PVT_THREAD_H */
344
345