1 #ifndef __OMPT_INTERNAL_H__ 2 #define __OMPT_INTERNAL_H__ 4 #include "ompt-event-specific.h" 9 #define _OMP_EXTERN extern "C" 11 #define OMPT_INVOKER(x) \ 12 ((x == fork_context_gnu) ? ompt_invoker_program : ompt_invoker_runtime) 14 #define ompt_callback(e) e##_callback 16 typedef struct ompt_callbacks_internal_s {
17 #define ompt_event_macro(event, callback, eventid) \ 18 callback ompt_callback(event); 20 FOREACH_OMPT_EVENT(ompt_event_macro)
22 #undef ompt_event_macro 23 } ompt_callbacks_internal_t;
25 typedef struct ompt_callbacks_active_s {
26 unsigned int enabled : 1;
27 #define ompt_event_macro(event, callback, eventid) unsigned int event : 1; 29 FOREACH_OMPT_EVENT(ompt_event_macro)
31 #undef ompt_event_macro 32 } ompt_callbacks_active_t;
34 #define TASK_TYPE_DETAILS_FORMAT(info) \ 35 ((info->td_flags.task_serial || info->td_flags.tasking_ser) \ 36 ? ompt_task_undeferred \ 38 ((!(info->td_flags.tiedness)) ? ompt_task_untied : 0x0) | \ 39 (info->td_flags.final ? ompt_task_final : 0x0) | \ 40 (info->td_flags.merged_if0 ? ompt_task_mergeable : 0x0) 44 ompt_data_t task_data;
45 struct kmp_taskdata *scheduling_parent;
48 ompt_task_dependence_t *deps;
53 ompt_data_t parallel_data;
54 void *master_return_address;
57 typedef struct ompt_lw_taskteam_s {
58 ompt_team_info_t ompt_team_info;
59 ompt_task_info_t ompt_task_info;
61 struct ompt_lw_taskteam_s *parent;
65 ompt_data_t thread_data;
66 ompt_data_t task_data;
70 ompt_wait_id_t wait_id;
71 int ompt_task_yielded;
75 extern ompt_callbacks_internal_t ompt_callbacks;
77 #if OMP_40_ENABLED && OMPT_SUPPORT && OMPT_OPTIONAL 79 #define KMP_OMPT_DEPS_ALLOC __kmp_fast_allocate 80 #define KMP_OMPT_DEPS_FREE __kmp_fast_free 82 #define KMP_OMPT_DEPS_ALLOC __kmp_thread_malloc 83 #define KMP_OMPT_DEPS_FREE __kmp_thread_free 91 void ompt_pre_init(
void);
92 void ompt_post_init(
void);
95 #define OMPT_GET_RETURN_ADDRESS(level) __builtin_return_address(level) 96 #define OMPT_GET_FRAME_ADDRESS(level) __builtin_frame_address(level) 98 int __kmp_control_tool(uint64_t command, uint64_t modifier,
void *arg);
100 extern ompt_callbacks_active_t ompt_enabled;
103 #define UNLIKELY(x) (x) 104 #define OMPT_NOINLINE __declspec(noinline) 106 #define UNLIKELY(x) __builtin_expect(!!(x), 0) 107 #define OMPT_NOINLINE __attribute__((noinline))