17 # define EXTERN extern "C"
19 # define EXTERN extern
26 #include "vt_inttypes.h"
27 #include "vt_otf_gen.h"
33 #if defined(VT_RUSAGE)
34 # include "vt_rusage.h"
40 #if (defined(VT_MT) || defined(VT_HYB))
41 # define VT_MY_THREAD_IS_ALIVE VTThrd_isAlive()
42 # define VT_MY_THREAD VTThrd_getThreadId()
43 # define VT_CHECK_THREAD VTThrd_registerThread(0)
44 #elif defined(VT_JAVA)
45 # define VT_MY_THREAD_IS_ALIVE VTThrd_isAlive()
46 # define VT_MY_THREAD VTThrd_getThreadId()
47 # define VT_CHECK_THREAD
49 # define VT_MY_THREAD_IS_ALIVE 1
50 # define VT_MY_THREAD 0
51 # define VT_CHECK_THREAD
57 EXTERN uint32_t VTThrdMaxNum;
70 char name_suffix[128];
86 #if !defined(VT_DISABLE_RFG)
92 #if (defined (VT_MPI) || defined (VT_HYB))
94 uint64_t mpicoll_next_matchingid;
99 #if defined(VT_IOWRAP)
101 uint8_t io_tracing_state;
103 uint8_t io_tracing_suspend_cnt;
104 uint8_t io_tracing_enabled;
108 #if (defined (VT_IOWRAP) || (defined(HAVE_MPI2_IO) && HAVE_MPI2_IO))
110 uint64_t io_next_matchingid;
111 uint64_t io_next_handle;
115 #if defined(VT_GETCPU)
121 #if defined(VT_RUSAGE)
123 uint64_t ru_next_read;
140 #if defined(VT_PLUGIN_CNTR)
142 void* plugin_cntr_defines;
150 #define VTTHRD_MY_VTTHRD (VTThrdv[VT_MY_THREAD])
153 #define VTTHRD_TRACE_STATUS(thrd) (thrd->trace_status)
156 #define VTTHRD_GEN(thrd) (thrd->gen)
159 #define VTTHRD_NAME_PREFIX(thrd) (thrd->name_prefix)
162 #define VTTHRD_NAME_SUFFIX(thrd) (thrd->name_suffix)
165 #define VTTHRD_NAME_EXTERNAL(thrd) (thrd->name_extern)
168 #define VTTHRD_PARENT_TID(thrd) (thrd->parent_tid);
171 #define VTTHRD_CHILD_NUM(thrd) (thrd->child_num);
174 #define VTTHRD_STACK_LEVEL(thrd) (thrd->stack_level)
177 #define VTTHRD_STACK_LEVEL_AT_OFF(thrd) \
178 (thrd->stack_level_at_off)
181 #define VTTHRD_STACK_LEVEL_AT_REWIND_MARK(thrd) \
182 (thrd->stack_level_at_rewind_mark)
185 #define VTTHRD_STACK_PUSH(thrd) (thrd->stack_level)++
188 #define VTTHRD_STACK_POP(thrd) if(--(thrd->stack_level) < 0) \
189 vt_error_msg("Stack underflow");
192 #define VTTHRD_RFGREGIONS(thrd) (thrd->rfg_regions)
195 #define VTTHRD_IS_VIRTUAL(thrd) (thrd->is_virtual)
197 #if (defined (VT_MPI) || defined (VT_HYB))
199 #define VTTHRD_MPICOLLOP_NEXT_MATCHINGID(thrd) \
200 (thrd->mpicoll_next_matchingid++)
203 #if (defined (VT_IOWRAP))
206 #define VTTHRD_IO_TRACING_STATE(thrd) \
207 (thrd->io_tracing_state)
208 #define VTTHRD_IO_TRACING_SUSPEND_CNT(thrd) \
209 (thrd->io_tracing_suspend_cnt)
212 #define VTTHRD_IO_TRACING_ENABLED(thrd) \
213 (thrd->io_tracing_enabled)
217 #if (defined (VT_IOWRAP) || (defined(HAVE_MPI2_IO) && HAVE_MPI2_IO))
218 #define VTTHRD_IO_NEXT_MATCHINGID(thrd) \
219 (thrd->io_next_matchingid++)
220 #define VTTHRD_IO_NEXT_HANDLE(thrd) \
221 (thrd->io_next_handle++)
224 #if (defined (VT_GETCPU))
227 #define VTTHRD_CPUID_VAL(thrd) (thrd->cpuid_val)
231 #if (defined (VT_RUSAGE))
234 #define VTTHRD_RU_NEXT_READ(thrd) (thrd->ru_next_read)
237 #define VTTHRD_RU_VALV(thrd) (thrd->ru_valv)
240 #define VTTHRD_RU_OBJ(thrd) (thrd->ru_obj)
244 #if (defined (VT_METR))
247 #define VTTHRD_OFFV(thrd) (thrd->offv)
250 #define VTTHRD_VALV(thrd) (thrd->valv)
253 #define VTTHRD_METV(thrd) (thrd->metv)
257 #if defined(VT_PLUGIN_CNTR)
260 #define VTTHRD_PLUGIN_CNTR_DEFINES(thrd) \
261 (thrd->plugin_cntr_defines)
269 EXTERN
void VTThrd_init(
void );
274 EXTERN
void VTThrd_finalize(
void );
285 EXTERN uint32_t VTThrd_create(
const char* tname, uint32_t ptid,
294 EXTERN
void VTThrd_delete(
VTThrd* thrd, uint32_t tid);
302 EXTERN
void VTThrd_destroy(
VTThrd* thrd, uint32_t tid);
309 EXTERN
void VTThrd_open(uint32_t tid);
316 EXTERN
void VTThrd_close(
VTThrd* thrd);
318 #if (defined(VT_MT) || defined(VT_HYB) || defined(VT_JAVA))
321 #define VTTHRD_LOCK_ENV() VTThrd_lock(&VTThrdMutexEnv)
322 #define VTTHRD_UNLOCK_ENV() VTThrd_unlock(&VTThrdMutexEnv)
323 #define VTTHRD_LOCK_IDS() VTThrd_lock(&VTThrdMutexIds)
324 #define VTTHRD_UNLOCK_IDS() VTThrd_unlock(&VTThrdMutexIds)
328 #if !defined(VT_JAVA)
329 # if defined(VT_THRD_PTHREAD)
330 EXTERN
void VTThrd_initPthread(
void);
331 # elif defined(VT_THRD_OMP)
332 EXTERN
void VTThrd_initOmp(
void);
334 EXTERN
void VTThrd_registerThread( uint32_t ptid );
336 EXTERN
void VTThrd_initJava(
void);
337 EXTERN
void VTThrd_registerThread(jthread thread,
const char* tname);
345 EXTERN uint8_t VTThrd_isAlive(
void);
352 EXTERN uint32_t VTThrd_getThreadId(
void);
359 EXTERN
void VTThrd_createMutex(VTThrdMutex** mutex);
366 EXTERN
void VTThrd_deleteMutex(VTThrdMutex** mutex);
373 EXTERN
void VTThrd_lock(VTThrdMutex** mutex);
380 EXTERN
void VTThrd_unlock(VTThrdMutex** mutex);
383 EXTERN VTThrdMutex* VTThrdMutexEnv;
384 EXTERN VTThrdMutex* VTThrdMutexIds;
392 EXTERN uint32_t VTThrdn;
int stack_level_at_rewind_mark
call stack level at rewind mark
Definition: vt_thrd.h:74
VTThrd struct holds all thread-specific data:
Definition: vt_thrd.h:65
Definition: rfg_regions.c:37
int8_t trace_status
trace status: VT_TRACE_ON, VT_TRACE_OFF, or VT_TRACE_OFF_PERMANENT
Definition: vt_thrd.h:76
uint32_t child_num
number of child threads
Definition: vt_thrd.h:82
VampirTrace http://www.tu-dresden.de/zih/vampirtrace.
Definition: vt_thrd_java.c:23
Definition: vt_rusage.c:89
VTGen * gen
trace file and buffer
Definition: vt_thrd.h:67
RFG_Regions * rfg_regions
RFG regions object.
Definition: vt_thrd.h:88
int stack_level_at_off
call stack level at trace off
Definition: vt_thrd.h:73
Definition: vt_metric_cpc.c:36
uint8_t is_virtual
flag: is virtual thread? (e.g.
Definition: vt_thrd.h:84
uint32_t parent_tid
parent thread id
Definition: vt_thrd.h:81
int stack_level
current call stack level
Definition: vt_thrd.h:72
Definition: vt_otf_gen.c:90