]> git.sur5r.net Git - openldap/blob - include/lthread_rdwr.h
Stuart Lynne's UNTESTED thread patch (p1)
[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 typedef struct rdwr_var {
18         int readers_reading;
19         int writer_writing;
20         pthread_mutex_t mutex;
21         pthread_cond_t lock_free;
22 } pthread_rdwr_t;
23
24 typedef void * pthread_rdwrattr_t;
25
26 #define pthread_rdwrattr_default NULL;
27
28 int pthread_rdwr_init_np(pthread_rdwr_t *rdwrp, pthread_rdwrattr_t *attrp);
29 int pthread_rdwr_rlock_np(pthread_rdwr_t *rdwrp);
30 int pthread_rdwr_runlock_np(pthread_rdwr_t *rdwrp);
31 int pthread_rdwr_wlock_np(pthread_rdwr_t *rdwrp);
32 int pthread_rdwr_wunlock_np(pthread_rdwr_t *rdwrp);
33
34 #ifdef LDAP_DEBUG
35 int pthread_rdwr_rchk_np(pthread_rdwr_t *rdwrp);
36 int pthread_rdwr_wchk_np(pthread_rdwr_t *rdwrp);
37 int pthread_rdwr_rwchk_np(pthread_rdwr_t *rdwrp);
38 #endif /* LDAP_DEBUG */
39
40 #endif /* _LTHREAD_RDWR_H */