OpenMPI  0.1.1
vt_plugin_cntr_int.h
1 /**
2  * VampirTrace
3  * http://www.tu-dresden.de/zih/vampirtrace
4  *
5  * Copyright (c) 2005-2012, ZIH, TU Dresden, Federal Republic of Germany
6  *
7  * Copyright (c) 1998-2005, Forschungszentrum Juelich, Juelich Supercomputing
8  * Centre, Federal Republic of Germany
9  *
10  * See the file COPYING in the package base directory for details
11  **/
12 
13 #if defined(VT_PLUGIN_CNTR)
14 
15 #ifndef _VT_PLUGIN_CNTR_INT_H
16 #define _VT_PLUGIN_CNTR_INT_H
17 
18 #include "vt_plugin_cntr.h"
19 #include "vt_thrd.h"
20 
21 #define VT_PLUGIN_PROCESS_GROUP_ALL_STRING "All Processes"
22 #define VT_PLUGIN_PROCESS_GROUP_HOST_STRING "Processes on Host "
23 #define VT_PLUGIN_PROCESS_GROUP_PROCESS_STRING "Threads on Process "
24 
25 enum cntr_group{
26  VT_PLUGIN_PROCESS_GROUP_ALL = 0,
27  VT_PLUGIN_PROCESS_GROUP_HOST,
28  VT_PLUGIN_PROCESS_GROUP_PROCESS,
29  VT_PLUGIN_PROCESS_GROUP_MAX
30 };
31 
32 EXTERN uint8_t vt_plugin_cntr_used;
33 
34 /**
35  * VampirTrace internal functions, which may change in later releases
36  */
37 
38 /**
39  * get the number of synch metrics for the current thread
40  */
41 uint32_t vt_plugin_cntr_get_num_synch_metrics(VTThrd * thrd);
42 /**
43  * get the current value of the synch counter nr for the current thread
44  */
45 uint64_t vt_plugin_cntr_get_synch_value(VTThrd * thrd, int nr, uint32_t * cid,
46  uint64_t * value);
47 
48 /**
49  * write all callback data for threadID, which occured between the
50  * last call of this function and time
51  */
52 void vt_plugin_cntr_write_callback_data(uint64_t time, uint32_t tid);
53 
54 /**
55  * stores all collected asynch event plugins data
56  */
57 void vt_plugin_cntr_write_asynch_event_data(uint64_t time, uint32_t tid);
58 
59 /**
60  * This should read the environment, and map the libraries
61  */
62 void vt_plugin_cntr_init(void);
63 /**
64  * This should set the correct counters for the current vampir trace thread
65  */
66 void vt_plugin_cntr_thread_init(VTThrd * thrd, uint32_t tid);
67 /**
68  * enable counters before tracing
69  */
70 void vt_plugin_cntr_thread_enable_counters(VTThrd * thrd);
71 /**
72  * disable counters after tracing
73  */
74 void vt_plugin_cntr_thread_disable_counters(VTThrd * thrd);
75 
76 /**
77  * This should free all per thread ressources
78  */
79 void vt_plugin_cntr_thread_exit(VTThrd * thrd);
80 
81 /**
82  * This should free all general ressources
83  * nr_threads is the number of threads the process generated
84  */
85 void vt_plugin_cntr_finalize(uint32_t nr_threads);
86 /**
87  * This should be used to check whether the current thread is
88  * a monitor thread of a callback function.
89  * Monitor threads should not be traced.
90  */
91 int vt_plugin_cntr_is_registered_monitor_thread(void);
92 
93 /**
94  * writes all post_mortem events to the trace files
95  * thrd is the thread for which the values shall be collected
96  * This should be called when closing all threads
97  */
98 void vt_plugin_cntr_write_post_mortem(VTThrd * thrd);
99 
100 /* Set Group IDs */
101 void vt_plugin_cntr_set_all_group(uint32_t group_id);
102 void vt_plugin_cntr_set_host_group(uint32_t group_id);
103 void vt_plugin_cntr_set_process_group(uint32_t group_id);
104 
105 #endif /* _VT_PLUGIN_CNTR_INT_H */
106 
107 #endif /* VT_PLUGIN_CNTR */
VTThrd struct holds all thread-specific data:
Definition: vt_thrd.h:65