~ubuntu-branches/ubuntu/vivid/mpich/vivid-proposed

« back to all changes in this revision

Viewing changes to src/mpid/pamid/include/mpidi_thread.h

  • Committer: Package Import Robot
  • Author(s): Anton Gladky
  • Date: 2014-04-01 20:24:20 UTC
  • mfrom: (5.2.4 sid)
  • Revision ID: package-import@ubuntu.com-20140401202420-t5ey1ia2klt5dkq3
Tags: 3.1-4
* [c3e3398] Disable test_primitives, which is unreliable on some platforms.
            (Closes: #743047)
* [265a699] Add minimal autotest.

Show diffs side-by-side

added added

removed removed

Lines of Context:
46
46
#if (MPICH_THREAD_LEVEL != MPI_THREAD_MULTIPLE)
47
47
#error MPICH_THREAD_LEVEL should be MPI_THREAD_MULTIPLE
48
48
#endif
49
 
#ifndef HAVE_RUNTIME_THREADCHECK
50
 
#error Need HAVE_RUNTIME_THREADCHECK
51
 
#endif
52
 
 
53
49
 
54
50
#define MPIU_THREAD_CS_INIT     ({ MPIDI_Mutex_initialize(); })
55
51
#define MPIU_THREAD_CS_FINALIZE
100
96
#define MPIU_THREAD_CS_INITFLAG_EXIT(_context)
101
97
#define MPIU_THREAD_CS_MEMALLOC_ENTER(_context)
102
98
#define MPIU_THREAD_CS_MEMALLOC_EXIT(_context)
103
 
#define MPIU_THREAD_CS_MPI_OBJ_ENTER(_context)
104
 
#define MPIU_THREAD_CS_MPI_OBJ_EXIT(_context)
 
99
#define MPIU_THREAD_CS_MPI_OBJ_ENTER(_context)      MPIDI_CS_ENTER(5)
 
100
#define MPIU_THREAD_CS_MPI_OBJ_EXIT(_context)       MPIDI_CS_EXIT(5)
105
101
#define MPIU_THREAD_CS_MSGQUEUE_ENTER(_context)
106
102
#define MPIU_THREAD_CS_MSGQUEUE_EXIT(_context)
107
103
#define MPIU_THREAD_CS_PAMI_ENTER(_context)
111
107
 
112
108
#elif MPIU_THREAD_GRANULARITY == MPIU_THREAD_GRANULARITY_PER_OBJECT
113
109
 
114
 
#define MPIDI_CS_ENTER(m) ({                     MPIDI_Mutex_acquire(m); })
115
 
#define MPIDI_CS_EXIT(m)  ({ MPIDI_Mutex_sync(); MPIDI_Mutex_release(m); })
116
 
#define MPIDI_CS_YIELD(m) ({ MPIDI_Mutex_sync(); MPIDI_Mutex_release(m); MPIDI_Mutex_acquire(m); })
117
 
#define MPIDI_CS_TRY(m)   ({ (0==MPIDI_Mutex_try_acquire(m)); })
118
 
#define MPIDI_CS_SCHED_YIELD(m) ({ MPIDI_Mutex_sync(); MPIDI_Mutex_release(m); sched_yield(); MPIDI_Mutex_acquire(m); })
 
110
#define MPIDI_CS_ENTER(m)                               \
 
111
    do {                                                \
 
112
        if (likely(MPIR_ThreadInfo.isThreaded)) {       \
 
113
            MPIDI_Mutex_acquire(m);                     \
 
114
        }                                               \
 
115
    } while (0)
 
116
 
 
117
#define MPIDI_CS_EXIT(m)                                \
 
118
    do {                                                \
 
119
        if (likely(MPIR_ThreadInfo.isThreaded)) {       \
 
120
            MPIDI_Mutex_sync();                         \
 
121
            MPIDI_Mutex_release(m);                     \
 
122
        }                                               \
 
123
    } while (0)
 
124
 
 
125
#define MPIDI_CS_YIELD(m)                               \
 
126
    do {                                                \
 
127
        if (likely(MPIR_ThreadInfo.isThreaded)) {       \
 
128
            MPIDI_Mutex_sync();                         \
 
129
            MPIDI_Mutex_release(m);                     \
 
130
            MPIDI_Mutex_acquire(m);                     \
 
131
        }                                               \
 
132
    } while (0)
 
133
 
 
134
#define MPIDI_CS_TRY(m)                                 \
 
135
    do {                                                \
 
136
        if (likely(MPIR_ThreadInfo.isThreaded)) {       \
 
137
            MPIDI_Mutex_try_acquire(m);                 \
 
138
        }                                               \
 
139
    } while (0)
 
140
 
 
141
#define MPIDI_CS_SCHED_YIELD(m)                         \
 
142
    do {                                                \
 
143
        if (likely(MPIR_ThreadInfo.isThreaded)) {       \
 
144
            MPIDI_Mutex_sync();                         \
 
145
            MPIDI_Mutex_release(m);                     \
 
146
            sched_yield();                              \
 
147
            MPIDI_Mutex_acquire(m);                     \
 
148
        }                                               \
 
149
    } while (0)
119
150
 
120
151
#define MPIU_THREAD_CS_ALLFUNC_ENTER(_context)
121
152
#define MPIU_THREAD_CS_ALLFUNC_EXIT(_context)
122
153
#define MPIU_THREAD_CS_ALLFUNC_YIELD(_context)
123
154
#define MPIU_THREAD_CS_ALLFUNC_SCHED_YIELD(_context)
124
155
#define MPIU_THREAD_CS_ALLFUNC_TRY(_context)        (0)
125
 
#define MPIU_THREAD_CS_INIT_ENTER(_context)         MPIDI_Mutex_acquire(0)
126
 
#define MPIU_THREAD_CS_INIT_EXIT(_context)          MPIDI_Mutex_release(0)
 
156
 
 
157
#define MPIU_THREAD_CS_INIT_ENTER(_context)         MPIDI_CS_ENTER(0)
 
158
#define MPIU_THREAD_CS_INIT_EXIT(_context)          MPIDI_CS_EXIT(0)
127
159
 
128
160
#define MPIU_THREAD_CS_CONTEXTID_ENTER(_context)    MPIDI_CS_ENTER(0)
129
161
#define MPIU_THREAD_CS_CONTEXTID_EXIT(_context)     MPIDI_CS_EXIT (0)