25
25
26
26
#include "opal_config.h"
27
27
28
- #include "opal/constants.h"
29
28
#include "opal/mca/threads/mutex.h"
29
+ #include "opal/constants.h"
30
30
31
31
/*
32
32
* Wait and see if some upper layer wants to use threads, if support
@@ -36,23 +36,36 @@ bool opal_uses_threads = false;
36
36
37
37
static void opal_mutex_construct (opal_mutex_t * m )
38
38
{
39
- opal_threads_ensure_init_qthreads ();
40
- opal_mutex_create (m );
39
+ opal_mutex_create (m );
41
40
}
42
41
43
42
static void opal_mutex_destruct (opal_mutex_t * m )
44
43
{
45
44
}
46
45
47
- OBJ_CLASS_INSTANCE (opal_mutex_t , opal_object_t , opal_mutex_construct , opal_mutex_destruct );
46
+ static void opal_recursive_mutex_construct (opal_mutex_t * m )
47
+ {
48
+ opal_mutex_recursive_create (m );
49
+ }
48
50
49
- static void opal_recursive_mutex_construct ( opal_recursive_mutex_t * m )
51
+ static void opal_recursive_mutex_destruct ( opal_mutex_t * m )
50
52
{
51
53
}
52
54
53
- OBJ_CLASS_INSTANCE (opal_recursive_mutex_t , opal_object_t , opal_recursive_mutex_construct ,
55
+ OBJ_CLASS_INSTANCE (opal_mutex_t ,
56
+ opal_object_t ,
57
+ opal_mutex_construct ,
54
58
opal_mutex_destruct );
55
59
60
+ static void opal_recursive_mutex_construct (opal_recursive_mutex_t * m )
61
+ {
62
+ }
63
+
64
+ OBJ_CLASS_INSTANCE (opal_recursive_mutex_t ,
65
+ opal_object_t ,
66
+ opal_recursive_mutex_construct ,
67
+ opal_recursive_mutex_destruct );
68
+
56
69
int opal_cond_init (opal_cond_t * cond )
57
70
{
58
71
opal_atomic_lock_init (& cond -> m_lock , 0 );
@@ -63,7 +76,7 @@ int opal_cond_init(opal_cond_t *cond)
63
76
64
77
typedef struct {
65
78
int m_signaled ;
66
- void * m_prev ;
79
+ void * m_prev ;
67
80
} cond_waiter_t ;
68
81
69
82
int opal_cond_wait (opal_cond_t * cond , opal_mutex_t * lock )
@@ -74,11 +87,11 @@ int opal_cond_wait(opal_cond_t *cond, opal_mutex_t *lock)
74
87
opal_atomic_lock (& cond -> m_lock );
75
88
cond_waiter_t waiter = {0 , NULL };
76
89
if (NULL == cond -> m_waiter_head ) {
77
- cond -> m_waiter_tail = (void * ) & waiter ;
90
+ cond -> m_waiter_tail = (void * )& waiter ;
78
91
} else {
79
- ((cond_waiter_t * ) cond -> m_waiter_head )-> m_prev = (void * ) & waiter ;
92
+ ((cond_waiter_t * )cond -> m_waiter_head )-> m_prev = (void * )& waiter ;
80
93
}
81
- cond -> m_waiter_head = (void * ) & waiter ;
94
+ cond -> m_waiter_head = (void * )& waiter ;
82
95
opal_atomic_unlock (& cond -> m_lock );
83
96
84
97
while (1 ) {
@@ -101,7 +114,7 @@ int opal_cond_broadcast(opal_cond_t *cond)
101
114
{
102
115
opal_atomic_lock (& cond -> m_lock );
103
116
while (NULL != cond -> m_waiter_tail ) {
104
- cond_waiter_t * p_cur_tail = (cond_waiter_t * ) cond -> m_waiter_tail ;
117
+ cond_waiter_t * p_cur_tail = (cond_waiter_t * )cond -> m_waiter_tail ;
105
118
cond -> m_waiter_tail = p_cur_tail -> m_prev ;
106
119
/* Awaken one of threads in a FIFO manner. */
107
120
p_cur_tail -> m_signaled = 1 ;
@@ -116,7 +129,7 @@ int opal_cond_signal(opal_cond_t *cond)
116
129
{
117
130
opal_atomic_lock (& cond -> m_lock );
118
131
if (NULL != cond -> m_waiter_tail ) {
119
- cond_waiter_t * p_cur_tail = (cond_waiter_t * ) cond -> m_waiter_tail ;
132
+ cond_waiter_t * p_cur_tail = (cond_waiter_t * )cond -> m_waiter_tail ;
120
133
cond -> m_waiter_tail = p_cur_tail -> m_prev ;
121
134
/* Awaken one of threads. */
122
135
p_cur_tail -> m_signaled = 1 ;
0 commit comments