globus_common  17.9
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
globus_thread_rw_mutex.h
1 
2 
3 #ifndef GLOBUS_THREAD_RW_MUTEX_H
4 #define GLOBUS_THREAD_RW_MUTEX_H 1
5 
7 #include "globus_thread.h"
8 
9 #ifdef __cplusplus
10 extern "C" {
11 #endif
12 
13 typedef struct
14 {
15  globus_mutex_t mutex;
16  struct globus_i_rw_mutex_waiter_s * waiters;
17  struct globus_i_rw_mutex_waiter_s ** tail;
18  struct globus_i_rw_mutex_waiter_s * idle;
19  globus_bool_t writing;
20  int readers;
21 } globus_rw_mutex_t;
22 
23 typedef int globus_rw_mutexattr_t;
24 
25 int
26 globus_rw_mutex_init(
27  globus_rw_mutex_t * rw_lock,
28  globus_rw_mutexattr_t * attr);
29 
30 int
31 globus_rw_mutex_readlock(
32  globus_rw_mutex_t * rw_lock);
33 
34 int
35 globus_rw_mutex_writelock(
36  globus_rw_mutex_t * rw_lock);
37 
38 int
39 globus_rw_mutex_readunlock(
40  globus_rw_mutex_t * rw_lock);
41 
42 int
43 globus_rw_mutex_writeunlock(
44  globus_rw_mutex_t * rw_lock);
45 
46 int
47 globus_rw_mutex_destroy(
48  globus_rw_mutex_t * rw_lock);
49 
60 int
61 globus_rw_cond_wait(
62  globus_cond_t * cond,
63  globus_rw_mutex_t * rw_lock);
64 
65 int
66 globus_rw_cond_timedwait(
67  globus_cond_t * cond,
68  globus_rw_mutex_t * rw_lock,
69  globus_abstime_t * abstime);
70 
71 
72 #ifdef __cplusplus
73 }
74 #endif
75 
76 #endif /* GLOBUS_THREAD_RW_MUTEX_H */
Globus Threading Abstraction.
int globus_bool_t
Boolean type.
Definition: globus_types.h:78
Mutex.
Definition: globus_thread.h:91
Condition variable.
Definition: globus_thread.h:108
Include System Headers.