1 /* 2 * ompd-specific.h -- OpenMP debug support 3 */ 4 5 //===----------------------------------------------------------------------===// 6 // 7 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 8 // See https://llvm.org/LICENSE.txt for license information. 9 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 10 // 11 //===----------------------------------------------------------------------===// 12 13 #include "kmp.h" 14 #include "omp-tools.h" 15 #include <stdint.h> 16 17 #ifndef __OMPD_SPECIFIC_H__ 18 #define __OMPD_SPECIFIC_H__ 19 20 #if OMPD_SUPPORT 21 22 void ompd_init(); 23 24 #ifdef __cplusplus 25 extern "C" { 26 #endif 27 extern char *ompd_env_block; 28 extern ompd_size_t ompd_env_block_size; 29 extern char *__kmp_tool_verbose_init; 30 #ifdef __cplusplus 31 } /* extern "C" */ 32 #endif 33 34 extern uint64_t ompd_state; 35 #define OMPD_ENABLE_BP 0x1 36 37 #define OMPD_FOREACH_ACCESS(OMPD_ACCESS) \ 38 OMPD_ACCESS(kmp_base_info_t, th_current_task) \ 39 OMPD_ACCESS(kmp_base_info_t, th_team) \ 40 OMPD_ACCESS(kmp_base_info_t, th_info) \ 41 OMPD_ACCESS(kmp_base_info_t, ompt_thread_info) \ 42 \ 43 OMPD_ACCESS(kmp_base_root_t, r_in_parallel) \ 44 \ 45 OMPD_ACCESS(kmp_base_team_t, ompt_team_info) \ 46 OMPD_ACCESS(kmp_base_team_t, ompt_serialized_team_info) \ 47 OMPD_ACCESS(kmp_base_team_t, t_active_level) \ 48 OMPD_ACCESS(kmp_base_team_t, t_implicit_task_taskdata) \ 49 OMPD_ACCESS(kmp_base_team_t, t_master_tid) \ 50 OMPD_ACCESS(kmp_base_team_t, t_nproc) \ 51 OMPD_ACCESS(kmp_base_team_t, t_level) \ 52 OMPD_ACCESS(kmp_base_team_t, t_parent) \ 53 OMPD_ACCESS(kmp_base_team_t, t_pkfn) \ 54 OMPD_ACCESS(kmp_base_team_t, t_threads) \ 55 \ 56 OMPD_ACCESS(kmp_desc_t, ds) \ 57 \ 58 OMPD_ACCESS(kmp_desc_base_t, ds_thread) \ 59 OMPD_ACCESS(kmp_desc_base_t, ds_tid) \ 60 \ 61 OMPD_ACCESS(kmp_info_t, th) \ 62 \ 63 OMPD_ACCESS(kmp_r_sched_t, r_sched_type) \ 64 OMPD_ACCESS(kmp_r_sched_t, chunk) \ 65 \ 66 OMPD_ACCESS(kmp_root_t, r) \ 67 \ 68 OMPD_ACCESS(kmp_internal_control_t, dynamic) \ 69 OMPD_ACCESS(kmp_internal_control_t, max_active_levels) \ 70 OMPD_ACCESS(kmp_internal_control_t, nproc) \ 71 OMPD_ACCESS(kmp_internal_control_t, proc_bind) \ 72 OMPD_ACCESS(kmp_internal_control_t, sched) \ 73 OMPD_ACCESS(kmp_internal_control_t, default_device) \ 74 OMPD_ACCESS(kmp_internal_control_t, thread_limit) \ 75 \ 76 OMPD_ACCESS(kmp_taskdata_t, ompt_task_info) \ 77 OMPD_ACCESS(kmp_taskdata_t, td_flags) \ 78 OMPD_ACCESS(kmp_taskdata_t, td_icvs) \ 79 OMPD_ACCESS(kmp_taskdata_t, td_parent) \ 80 OMPD_ACCESS(kmp_taskdata_t, td_team) \ 81 \ 82 OMPD_ACCESS(kmp_task_t, routine) \ 83 \ 84 OMPD_ACCESS(kmp_team_p, t) \ 85 \ 86 OMPD_ACCESS(kmp_nested_nthreads_t, used) \ 87 OMPD_ACCESS(kmp_nested_nthreads_t, nth) \ 88 \ 89 OMPD_ACCESS(kmp_nested_proc_bind_t, used) \ 90 OMPD_ACCESS(kmp_nested_proc_bind_t, bind_types) \ 91 \ 92 OMPD_ACCESS(ompt_task_info_t, frame) \ 93 OMPD_ACCESS(ompt_task_info_t, scheduling_parent) \ 94 OMPD_ACCESS(ompt_task_info_t, task_data) \ 95 \ 96 OMPD_ACCESS(ompt_team_info_t, parallel_data) \ 97 \ 98 OMPD_ACCESS(ompt_thread_info_t, state) \ 99 OMPD_ACCESS(ompt_thread_info_t, wait_id) \ 100 OMPD_ACCESS(ompt_thread_info_t, thread_data) \ 101 \ 102 OMPD_ACCESS(ompt_data_t, value) \ 103 OMPD_ACCESS(ompt_data_t, ptr) \ 104 \ 105 OMPD_ACCESS(ompt_frame_t, exit_frame) \ 106 OMPD_ACCESS(ompt_frame_t, enter_frame) \ 107 \ 108 OMPD_ACCESS(ompt_lw_taskteam_t, parent) \ 109 OMPD_ACCESS(ompt_lw_taskteam_t, ompt_team_info) \ 110 OMPD_ACCESS(ompt_lw_taskteam_t, ompt_task_info) 111 112 #define OMPD_FOREACH_BITFIELD(OMPD_BITFIELD) \ 113 OMPD_BITFIELD(kmp_tasking_flags_t, final) \ 114 OMPD_BITFIELD(kmp_tasking_flags_t, tiedness) \ 115 OMPD_BITFIELD(kmp_tasking_flags_t, tasktype) \ 116 OMPD_BITFIELD(kmp_tasking_flags_t, task_serial) \ 117 OMPD_BITFIELD(kmp_tasking_flags_t, tasking_ser) \ 118 OMPD_BITFIELD(kmp_tasking_flags_t, team_serial) \ 119 OMPD_BITFIELD(kmp_tasking_flags_t, started) \ 120 OMPD_BITFIELD(kmp_tasking_flags_t, executing) \ 121 OMPD_BITFIELD(kmp_tasking_flags_t, complete) \ 122 OMPD_BITFIELD(kmp_tasking_flags_t, freed) \ 123 OMPD_BITFIELD(kmp_tasking_flags_t, native) 124 125 #define OMPD_FOREACH_SIZEOF(OMPD_SIZEOF) \ 126 OMPD_SIZEOF(kmp_info_t) \ 127 OMPD_SIZEOF(kmp_taskdata_t) \ 128 OMPD_SIZEOF(kmp_task_t) \ 129 OMPD_SIZEOF(kmp_tasking_flags_t) \ 130 OMPD_SIZEOF(kmp_thread_t) \ 131 OMPD_SIZEOF(ompt_data_t) \ 132 OMPD_SIZEOF(ompt_id_t) \ 133 OMPD_SIZEOF(__kmp_avail_proc) \ 134 OMPD_SIZEOF(__kmp_max_nth) \ 135 OMPD_SIZEOF(__kmp_stksize) \ 136 OMPD_SIZEOF(__kmp_omp_cancellation) \ 137 OMPD_SIZEOF(__kmp_max_task_priority) \ 138 OMPD_SIZEOF(__kmp_display_affinity) \ 139 OMPD_SIZEOF(__kmp_affinity_format) \ 140 OMPD_SIZEOF(__kmp_tool_libraries) \ 141 OMPD_SIZEOF(__kmp_tool_verbose_init) \ 142 OMPD_SIZEOF(__kmp_tool) \ 143 OMPD_SIZEOF(ompd_state) \ 144 OMPD_SIZEOF(kmp_nested_nthreads_t) \ 145 OMPD_SIZEOF(__kmp_nested_nth) \ 146 OMPD_SIZEOF(kmp_nested_proc_bind_t) \ 147 OMPD_SIZEOF(__kmp_nested_proc_bind) \ 148 OMPD_SIZEOF(int) \ 149 OMPD_SIZEOF(char) \ 150 OMPD_SIZEOF(__kmp_gtid) \ 151 OMPD_SIZEOF(__kmp_nth) 152 153 #endif /* OMPD_SUPPORT */ 154 #endif 155