1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
$NetBSD: patch-src_mpid_ch3_channels_nemesis_include_mpidi_ch3_impl.h,v 1.2 2017/04/29 18:18:52 adam Exp $
Use pthread_mutexattr_setpshared() only when available.
--- src/mpid/ch3/channels/nemesis/include/mpidi_ch3_impl.h.orig 2015-11-10 02:39:01.000000000 +0000
+++ src/mpid/ch3/channels/nemesis/include/mpidi_ch3_impl.h
@@ -106,6 +106,7 @@ int MPIDI_CH3_SHM_Win_free(MPID_Win **wi
"**pthread_unlock %s", strerror(pt_err)); \
} while (0)
+#ifdef _POSIX_THREAD_PROCESS_SHARED
#define MPIDI_CH3I_SHM_MUTEX_INIT(win_ptr) \
do { \
int pt_err; \
@@ -124,6 +125,23 @@ int MPIDI_CH3_SHM_Win_free(MPID_Win **wi
MPIR_ERR_CHKANDJUMP1(pt_err, mpi_errno, MPI_ERR_OTHER, "**pthread_mutex", \
"**pthread_mutex %s", strerror(pt_err)); \
} while (0);
+#else
+#define MPIDI_CH3I_SHM_MUTEX_INIT(win_ptr) \
+ do { \
+ int pt_err; \
+ pthread_mutexattr_t attr; \
+ \
+ pt_err = pthread_mutexattr_init(&attr); \
+ MPIR_ERR_CHKANDJUMP1(pt_err, mpi_errno, MPI_ERR_OTHER, "**pthread_mutex", \
+ "**pthread_mutex %s", strerror(pt_err)); \
+ pt_err = pthread_mutex_init((win_ptr)->shm_mutex, &attr); \
+ MPIR_ERR_CHKANDJUMP1(pt_err, mpi_errno, MPI_ERR_OTHER, "**pthread_mutex", \
+ "**pthread_mutex %s", strerror(pt_err)); \
+ pt_err = pthread_mutexattr_destroy(&attr); \
+ MPIR_ERR_CHKANDJUMP1(pt_err, mpi_errno, MPI_ERR_OTHER, "**pthread_mutex", \
+ "**pthread_mutex %s", strerror(pt_err)); \
+ } while (0);
+#endif
#define MPIDI_CH3I_SHM_MUTEX_DESTROY(win_ptr) \
do { \
|