Skip to content

Commit 039c7db

Browse files
committed
opal/mutex: add static mutex initializers
Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
1 parent caa6b2e commit 039c7db

File tree

2 files changed

+63
-3
lines changed

2 files changed

+63
-3
lines changed

opal/class/opal_object.h

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -168,9 +168,20 @@ extern int opal_class_init_epoch;
168168
* @param NAME Name of the class to initialize
169169
*/
170170
#if OPAL_ENABLE_DEBUG
171-
#define OPAL_OBJ_STATIC_INIT(BASE_CLASS) { OPAL_OBJ_MAGIC_ID, OBJ_CLASS(BASE_CLASS), 1, __FILE__, __LINE__ }
171+
#define OPAL_OBJ_STATIC_INIT(BASE_CLASS) \
172+
{ \
173+
.obj_magic_id = OPAL_OBJ_MAGIC_ID, \
174+
.obj_class = OBJ_CLASS(BASE_CLASS), \
175+
.obj_reference_count = 1, \
176+
.cls_init_file_name = __FILE__, \
177+
.cls_init_lineno = __LINE__, \
178+
}
172179
#else
173-
#define OPAL_OBJ_STATIC_INIT(BASE_CLASS) { OBJ_CLASS(BASE_CLASS), 1 }
180+
#define OPAL_OBJ_STATIC_INIT(BASE_CLASS) \
181+
{ \
182+
.obj_class = OBJ_CLASS(BASE_CLASS), \
183+
.obj_reference_count = 1, \
184+
}
174185
#endif
175186

176187
/**

opal/threads/mutex_unix.h

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */
12
/*
23
* Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
34
* University Research and Technology
@@ -9,7 +10,7 @@
910
* University of Stuttgart. All rights reserved.
1011
* Copyright (c) 2004-2005 The Regents of the University of California.
1112
* All rights reserved.
12-
* Copyright (c) 2007 Los Alamos National Security, LLC. All rights
13+
* Copyright (c) 2007-2015 Los Alamos National Security, LLC. All rights
1314
* reserved.
1415
* Copyright (c) 2015 Research Organization for Information Science
1516
* and Technology (RIST). All rights reserved.
@@ -63,6 +64,54 @@ struct opal_mutex_t {
6364
OPAL_DECLSPEC OBJ_CLASS_DECLARATION(opal_mutex_t);
6465
OPAL_DECLSPEC OBJ_CLASS_DECLARATION(opal_recursive_mutex_t);
6566

67+
#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP)
68+
#define OPAL_PTHREAD_RECURSIVE_MUTEX_INITIALIZER PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
69+
#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER)
70+
#define OPAL_PTHREAD_RECURSIVE_MUTEX_INITIALIZER PTHREAD_RECURSIVE_MUTEX_INITIALIZER
71+
#endif
72+
73+
#if OPAL_ENABLE_DEBUG
74+
#define OPAL_MUTEX_STATIC_INIT \
75+
{ \
76+
.super = OPAL_OBJ_STATIC_INIT(opal_mutex_t), \
77+
.m_lock_pthread = PTHREAD_MUTEX_INITIALIZER, \
78+
.m_lock_debug = 0, \
79+
.m_lock_file = NULL, \
80+
.m_lock_line = 0, \
81+
.m_lock_atomic = { .u = { .lock = OPAL_ATOMIC_UNLOCKED } }, \
82+
}
83+
#else
84+
#define OPAL_MUTEX_STATIC_INIT \
85+
{ \
86+
.super = OPAL_OBJ_STATIC_INIT(opal_mutex_t), \
87+
.m_lock_pthread = PTHREAD_MUTEX_INITIALIZER, \
88+
.m_lock_atomic = { .u = { .lock = OPAL_ATOMIC_UNLOCKED } }, \
89+
}
90+
#endif
91+
92+
#if defined(OPAL_PTHREAD_RECURSIVE_MUTEX_INITIALIZER)
93+
94+
#if OPAL_ENABLE_DEBUG
95+
#define OPAL_RECURSIVE_MUTEX_STATIC_INIT \
96+
{ \
97+
.super = OPAL_OBJ_STATIC_INIT(opal_mutex_t), \
98+
.m_lock_pthread = OPAL_PTHREAD_RECURSIVE_MUTEX_INITIALIZER, \
99+
.m_lock_debug = 0, \
100+
.m_lock_file = NULL, \
101+
.m_lock_line = 0, \
102+
.m_lock_atomic = { .u = { .lock = OPAL_ATOMIC_UNLOCKED } }, \
103+
}
104+
#else
105+
#define OPAL_RECURSIVE_MUTEX_STATIC_INIT \
106+
{ \
107+
.super = OPAL_OBJ_STATIC_INIT(opal_mutex_t), \
108+
.m_lock_pthread = OPAL_PTHREAD_RECURSIVE_MUTEX_INITIALIZER, \
109+
.m_lock_atomic = { .u = { .lock = OPAL_ATOMIC_UNLOCKED } }, \
110+
}
111+
#endif
112+
113+
#endif
114+
66115
/************************************************************************
67116
*
68117
* mutex operations (non-atomic versions)

0 commit comments

Comments
 (0)