|
| 1 | +/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */ |
1 | 2 | /*
|
2 | 3 | * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
|
3 | 4 | * University Research and Technology
|
|
9 | 10 | * University of Stuttgart. All rights reserved.
|
10 | 11 | * Copyright (c) 2004-2005 The Regents of the University of California.
|
11 | 12 | * 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 |
13 | 14 | * reserved.
|
14 | 15 | * Copyright (c) 2015 Research Organization for Information Science
|
15 | 16 | * and Technology (RIST). All rights reserved.
|
@@ -63,6 +64,54 @@ struct opal_mutex_t {
|
63 | 64 | OPAL_DECLSPEC OBJ_CLASS_DECLARATION(opal_mutex_t);
|
64 | 65 | OPAL_DECLSPEC OBJ_CLASS_DECLARATION(opal_recursive_mutex_t);
|
65 | 66 |
|
| 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 | + |
66 | 115 | /************************************************************************
|
67 | 116 | *
|
68 | 117 | * mutex operations (non-atomic versions)
|
|
0 commit comments