blob: 42da9d867939f4253600146927df2f03f0d09095 [file] [log] [blame]
Andrey Churbanove5f44922015-04-29 16:22:07 +00001#ifndef __OMPT_INTERNAL_H__
2#define __OMPT_INTERNAL_H__
3
4#include "ompt.h"
5#include "ompt-event-specific.h"
6
7#define OMPT_VERSION 1
8
9#define _OMP_EXTERN extern "C"
10
Jonathan Peyton3fdf3292015-07-21 18:03:30 +000011#define OMPT_INVOKER(x) \
12 ((x == fork_context_gnu) ? ompt_invoker_program : ompt_invoker_runtime)
Andrey Churbanove5f44922015-04-29 16:22:07 +000013
14
15#define ompt_callback(e) e ## _callback
16
Andrey Churbanove5f44922015-04-29 16:22:07 +000017
18typedef struct ompt_callbacks_s {
19#define ompt_event_macro(event, callback, eventid) callback ompt_callback(event);
20
21 FOREACH_OMPT_EVENT(ompt_event_macro)
22
23#undef ompt_event_macro
24} ompt_callbacks_t;
25
26
27
28typedef struct {
Jonas Hahnfeld39b68622016-01-28 10:39:52 +000029 ompt_frame_t frame;
30 void* function;
31 ompt_task_id_t task_id;
32#if OMP_40_ENABLED
33 int ndeps;
34 ompt_task_dependence_t *deps;
35#endif /* OMP_40_ENABLED */
Andrey Churbanove5f44922015-04-29 16:22:07 +000036} ompt_task_info_t;
37
38
39typedef struct {
40 ompt_parallel_id_t parallel_id;
41 void *microtask;
42} ompt_team_info_t;
43
44
45typedef struct ompt_lw_taskteam_s {
46 ompt_team_info_t ompt_team_info;
47 ompt_task_info_t ompt_task_info;
48 struct ompt_lw_taskteam_s *parent;
49} ompt_lw_taskteam_t;
50
51
52typedef struct ompt_parallel_info_s {
53 ompt_task_id_t parent_task_id; /* id of parent task */
54 ompt_parallel_id_t parallel_id; /* id of parallel region */
55 ompt_frame_t *parent_task_frame; /* frame data of parent task */
56 void *parallel_function; /* pointer to outlined function */
57} ompt_parallel_info_t;
58
59
60typedef struct {
61 ompt_state_t state;
62 ompt_wait_id_t wait_id;
63 void *idle_frame;
64} ompt_thread_info_t;
65
66
Andrey Churbanove5f44922015-04-29 16:22:07 +000067extern ompt_callbacks_t ompt_callbacks;
68
Jonas Hahnfeld39b68622016-01-28 10:39:52 +000069#if OMP_40_ENABLED && OMPT_SUPPORT && OMPT_TRACE
70#if USE_FAST_MEMORY
71# define KMP_OMPT_DEPS_ALLOC __kmp_fast_allocate
72# define KMP_OMPT_DEPS_FREE __kmp_fast_free
73# else
74# define KMP_OMPT_DEPS_ALLOC __kmp_thread_malloc
75# define KMP_OMPT_DEPS_FREE __kmp_thread_free
76# endif
77#endif /* OMP_40_ENABLED && OMPT_SUPPORT && OMPT_TRACE */
78
Andrey Churbanove5f44922015-04-29 16:22:07 +000079#ifdef __cplusplus
80extern "C" {
81#endif
82
Jonathan Peyton82a13bf2015-09-21 18:01:02 +000083void ompt_pre_init(void);
84void ompt_post_init(void);
Andrey Churbanove5f44922015-04-29 16:22:07 +000085void ompt_fini(void);
86
Jonathan Peytonb68a85d2015-09-21 18:11:22 +000087extern int ompt_enabled;
88
Andrey Churbanove5f44922015-04-29 16:22:07 +000089#ifdef __cplusplus
90};
91#endif
92
93#endif