]> git.sur5r.net Git - openldap/blob - include/lthread_rdwr.h
Remove DEFS variables from Makefiles, remove bridge.h.
[openldap] / include / lthread_rdwr.h
1 #ifndef _LTHREAD_RDWR_H
2 #define _LTHREAD_RDWR_H 1
3
4 /********************************************************
5  * An example source module to accompany...
6  *
7  * "Using POSIX Threads: Programming with Pthreads"
8  *     by Brad nichols, Dick Buttlar, Jackie Farrell
9  *     O'Reilly & Associates, Inc.
10  *
11  ********************************************************
12  * 
13  * Include file for reader/writer locks
14  * 
15  */
16
17 #include <ldap_cdefs.h>
18
19 LDAP_BEGIN_DECL
20
21 typedef struct rdwr_var {
22         int readers_reading;
23         int writer_writing;
24         pthread_mutex_t mutex;
25         pthread_cond_t lock_free;
26 } pthread_rdwr_t;
27
28 typedef void * pthread_rdwrattr_t;
29
30 #define pthread_rdwrattr_default NULL;
31
32 LDAP_F int pthread_rdwr_init_np LDAP_P((pthread_rdwr_t *rdwrp, pthread_rdwrattr_t *attrp));
33 LDAP_F int pthread_rdwr_rlock_np LDAP_P((pthread_rdwr_t *rdwrp));
34 LDAP_F int pthread_rdwr_runlock_np LDAP_P((pthread_rdwr_t *rdwrp));
35 LDAP_F int pthread_rdwr_wlock_np LDAP_P((pthread_rdwr_t *rdwrp));
36 LDAP_F int pthread_rdwr_wunlock_np LDAP_P((pthread_rdwr_t *rdwrp));
37
38 #ifdef LDAP_DEBUG
39 LDAP_F int pthread_rdwr_rchk_np LDAP_P((pthread_rdwr_t *rdwrp));
40 LDAP_F int pthread_rdwr_wchk_np LDAP_P((pthread_rdwr_t *rdwrp));
41 LDAP_F int pthread_rdwr_rwchk_np LDAP_P((pthread_rdwr_t *rdwrp));
42 #endif /* LDAP_DEBUG */
43
44 LDAP_END_DECL
45
46 #endif /* _LTHREAD_RDWR_H */